일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카카오
- lambda
- 파이썬
- DateTime
- 정렬
- heapq
- 재귀함수
- 자바
- 프로그래머스
- 위클리 챌린지
- python
- Combinations
- Re
- Zip
- 수학
- programmers
- 동적 계획법
- Set
- 이분탐색
- 다익스트라
- 그리디
- 정규식
- java
- dfs
- BFS
- divmod
- KAKAO BLIND RECRUITMENT
- backjoon
- 백준
- 추석맞이 코딩챌린지
- Today
- Total
목록프로그래머스 (99)
상상쓰
https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr DFS 알고리즘을 통하여 0 ~ n-1 을 분할한다. 컴퓨터의 번호가 check 안 되어 있을 때(check[i] == 0), 재귀함수를 통해 이어져 있는 컴퓨터들의 번호를 다 check 해주고(check[i] = 1) answer 에 1을 더해준다. def solution(n, computers): answer = 0 check = [0] * n for ..
https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 문자열 s 를 배열로 만들어 길이에 따라 정렬한 뒤 차례대로 중복 없이 answer 에 담으면 된다. def solution(s): answer = [] s = s.replace('{', '[') s = s.replace('}', ']') result = eval(s) result.sort(key = len) ..
https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr 저번에 풀었던 [3차] 자동완성에서 썼던 Trie 자료구조를 이용하였다. '?' 가 접두사 아니면 접미사로만 존재하기 때문에 두 개의 dictionary 를 만들어 검색할 수 있도록 하였다. 예를 들어, 'frodo' 를 dictionary에 추가시키면 {'f': {'*': [5], 'r': {'*': [5], 'o': {'*': [5], 'd': {'*': [5], 'o': {'*': [5]}}}}}} 이고 '*' 는 그 위치의 문자를 가진 문자열의 길이가 5인 것이 하나 존재한다는 의미이다. 'front', 'frost' 과 'fronze..
https://programmers.co.kr/learn/courses/30/lessons/42888?language=python3 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 퇴근! def solution(record): answer = [] dic = {} for i in record: if i[0] != 'L': command, idx, name = i.split() dic[idx] = name for i in record: if i[0] == 'E': answer.append(dic[i.split(..
https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3# 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 예를 들어, 정렬하면 '119,' '11955' 가 되며 119 와 11955 사이에 접두어가 119 가 아닌 전화번호가 올 수 없다. def solution(phone_book): answer = False N = len(phone_book) phone_book.sort() for i in range(N-1): answer ..
https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 1부터 시작하여 BFS 알고리즘을 이용하여 구현했다. while 문을 한번 돌 때마다 deque 의 popleft() 함수를 이용하면 1과의 거리가 1씩 늘어나는 번호들의 집합을 얻을 수 있다. from collections import deque, defaultdict def solution(n, edge): answer = 0 dic = defaultdict(list) D = defaultdict(int) D[1] = 1 que..
https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 4단계 문제 '호텔 방 배정' 처럼 재귀함수를 이용하여 위치를 찾고 'C' 일 때, k 를 remove 에 담아 처리하려고 했으나, 'Z' 때문에 구현하기가 힘들 것 같았다. 그래서 생각해낸 것이 heapq 를 이용하였다. 'Z' 의 경우에도 복원된 행의 위치를 queue 에 담기만 하면 제 위치를 찾아가기 때문..
https://programmers.co.kr/learn/courses/30/lessons/17676 = process[k][0]: c = c + 1 if answer < c: answer = c return answer print(solution(['2016-09-15 01:00:04.001 2.0s', '2016-09-15 01:00:07.000 2s'])) # 1
https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 자리에 응시자가 올 경우, 맨해튼 거리가 1인 자리에 빈 테이블이 온다면 '0' 를 'T'..
https://programmers.co.kr/learn/courses/30/lessons/64063 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr dic 과 재귀함수를 이용하여 빠르게 빈방을 찾아주도록 한다. 처음에는 아래의 방식과 비슷하게 구현하여 while 을 이용하여 dic[dic[]] 으로 구현했는데 시간 초과가 났다. 다른 블로그를 참고하니 재귀함수가 사용되었는데 앞으로 비슷한 문제가 나오면 이렇게 풀어야겠다. import sys sys.setrecursionlimit(10000000) def room_empty(i, dic): answer = 0 if i not in dic: dic[i] = i + 1 answer = i else: j = room_empty(dic[i],..