일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 코딩테스트
- 라이브템플릿
- BFS
- beandefinitionstoreexception
- springboot
- 탐욕법
- Spring
- 최단경로
- 파이썬
- codility
- 알고리즘
- java
- applicationeventpublisher
- Dijkstra
- Greedy
- Python
- error
- spring security
- javascript
- API
- HTTP
- brute force
- 2018 KAKAO BLIND RECRUITMENT
- 2981
- 백준
- 문자열
- 프로그래머스
- 소수
- counting elements
- algorithm
- Today
- Total
목록Python (35)
Altiora Petamus

코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 🤔생각해보기 문자열 다루는 능력을 묻는 문제. 난이도는 '하' 로 분류되어 있고 실제 정답률도 73.47% 로 어려운 문제에 속하지는 않지만, 문자열을 능숙하게 처리하지 못한다면 까다로울 수 있다. 로직은 문제에 잘 설명되있으며 천천히 과정을 구현해나가면 된다. 정규식을 활용하면 간단하게 문자열에서 원하는 부분을 추출하여 사용할 수 있다. 코드 정규식 group 활용 import re def solution(dart_result): p = re.compile(r"(?P\d+)(?P[SDT])(?P[*#]?)") point_data = { 'S': 1, 'D': 2, 'T': 3 } count = [] while dart_result:..

코딩테스트 연습 - [1차] 추석 트래픽입력: [ "2016-09-15 20:59:57.421 0.351s", "2016-09-15 20:59:58.233 1.181s", "2016-09-15 20:59:58.299 0.8s", "2016-09-15 20:59:58.688 1.041s", "2016-09-15 20:59:59.591 1.412s", "2016-09-15 21:00:00.464 1.466s", "2016-09-15 21:00:00.741 1.581s", "2016-09-1programmers.co.kr🤔생각해보기카카오에서도 난이도를 '상' 으로 분류했으며 해당 코테에서 가장 마지막 문제로 출제되었다. 꽤나 머리 아픈 문제니 한 번 차근차근 풀어보자.시간과 관련된 문자열 처리에는 시간을 초..

2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 🤔생각해보기 처음 떠올린 방법은, visited 와 똑같은 crashed 라는 배열을 만들어놓고 벽을 뚫었을 때 체크하는 방법과 3차원 배열을 활용해서 풀어보는 방법이다. 개인적으로는 2차원 배열도 머리가 복잡해져서 꺼리게 되는지라 3차원 배열 활용은 뒤로 미루고 crashed 라는 새로운 배열을 만들어놓고 활용해보려 했는데, 잘 안풀리고 오히려 더 복잡해져서 결국 1시간이나 더 써서 3차원 배열로 풀었다. (처음부터 그냥 곱게 3차원 ..

코딩테스트 연습 - 문자열 다루기 기본 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 programmers.co.kr 🤔생각해보기 문제는 추가적인 부연 설명이 필요없을 정도로 아주 간단하므로 바로 풀이로 넘어가보자. 정규식 import re def solution(s): return bool(re.match(r"^(\d{4}|\d{6})$", s)) 최종 결과를 Boolean 으로 return 해야하므로 bool() 을 사용해서 변환해준다. 중요한 건 내부 정규식인데, 구체적으로 설명하면 아래와 같다. ^ : 시작 문자 &..

TapeEquilibrium coding task - Learn to Code - Codility Minimize the value |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|. app.codility.com 🤔생각해보기 문제 그대로 단순히 배열을 slice 하는 방식으로 풀었더니 시간복잡도 문제라 그런지 점수가 아주 짜게 나왔다. 그래서 Dynamic programming 으로 풀어보았다. 합을 저장해가는 배열을 만들어둔다. 그 배열에서 하나씩 꺼내서 연산을 진행하면, 다시 처음부터 합을 구할 필요가 없다. 첫번째 풀이 - Total score 61% def solution(A): result = 0 dp = [0] * (len(A) - 1) dp[0] = A[..

코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 🤔생각해보기 문자열을 한자리씩 판별하여 소수인지 확인해본다. 이 과정에서 소수인지 검사해야하므로 소수 체크 함수를 하나 만들어준다. 소수라면 따로 배열에 담아 놓는다. 한자리씩 검사가 끝났다면, 문자열을 다양한 조합으로 변형해야하므로 permutations 을 사용하여 모든 경우의 수를 만들어준다. set() 자료형을 활용하여 '3번'으로 생긴 경우의 수 중복을 제거한다. 숫자들이 소수인지 체크하고 '2번'을 실행한다. 소수들이 담긴 배열의 길이를..

코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 🤔생각해보기 먼저 문제의 조건을 살펴보자면, 속한 노래가 많이 재생된 장르를 먼저 수록 → 각각 장르의 재생 횟수를 정렬된 상태로 봐야 한다. 장르 내에서 많이 재생된 노래를 먼저 수록 → 특정 장르에서 어떤 노래가 많이 재생되었는지 알아야 한다. 고유번호가 낮은 노래를 먼저 수록 → 최초 정렬시 고유번호로 정렬하여 Stable sort 가 유지되도록 유도하기 어느 정도 방향성을 잡은 후엔, 사고를 단순하게 하기 위해 dictionary 를 두 개 선언해서 풀..

코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 🤔생각해보기 처음엔 문제를 보고 살짝 당황했다. 문자를 하나하나 모두 체크하라는건지 도대체 이걸 어떻게 풀어야하나... 그래서 그림으로 그려봤다. 이런 모양의 그래프가 그려지며, 그림을 보면 반대편 끝에 있는 "cog" 가지 도달하기 위한 깊이를 세어주면 되겠다는 느낌이 든다. 그래프를 그려보면 알게되지만, 결국 모든 스펠링의 검사가 필요하다. 알고리즘을 순서대로 적어보자면, 거리를 알기 위해 BFS 를 이용하여 각 노..