일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring
- 최단경로
- Dijkstra
- Greedy
- 파이썬
- HTTP
- 프로그래머스
- javascript
- java
- beandefinitionstoreexception
- 백준
- 소수
- algorithm
- 문자열
- 탐욕법
- springboot
- 알고리즘
- applicationeventpublisher
- BFS
- spring security
- 2981
- counting elements
- 2018 KAKAO BLIND RECRUITMENT
- 라이브템플릿
- 코딩테스트
- brute force
- Python
- codility
- API
- error
- Today
- Total
목록프로그래머스 (11)
Altiora Petamus
코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 🤔생각해보기 파이썬의 정렬은 순서가 뒤집히지 않는 stable 한 정렬을 구현하고 있다. 그러므로 정렬의 단계에 맞춰서 실행되게끔만 구현하면 된다. 방법은 다음과 같다. 문자열을 파싱하기 위해서 정규식을 사용한다. 정규식의 그룹을 활용하면 특정 부분을 쉽게 추출할 수 있다. 파이썬의 람다를 활용하면 정렬 조건을 넣을 수 있다. 튜플의 요소들이 순서대로 실행된다. 코드 import re def solution(files): p = re.compile(r..
코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 🤔생각해보기 처음은 정규식으로 해결했는데 원인 모를 런타임 에러가 발생해서 정규식을 사용하지 않고 해결했다. 사실 "," 로 필요한 문자열을 구분할 수 있기 때문에 굳이 정규식을 쓰지 않아도 되고... 에러 찾는데 시간을 오래 허비해서 아쉽지만, 해결과정의 알고리즘은 간단한 편이다. "#" 을 그냥 처리할 수는 없으므로 2개의 문자를 하나로 변환해주는 과정을 구현해주는 것이 핵심 아이디어라 할 수 있겠다. 코드 def convert(string): ..
코딩테스트 연습 - [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🤔생각해보기카카오에서도 난이도를 '상' 으로 분류했으며 해당 코테에서 가장 마지막 문제로 출제되었다. 꽤나 머리 아픈 문제니 한 번 차근차근 풀어보자.시간과 관련된 문자열 처리에는 시간을 초..
코딩테스트 연습 - 문자열 다루기 기본 문자열 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() 을 사용해서 변환해준다. 중요한 건 내부 정규식인데, 구체적으로 설명하면 아래와 같다. ^ : 시작 문자 &..
코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 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 를 이용하여 각 노..