일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 추석맞이 코딩챌린지
- divmod
- 재귀함수
- programmers
- Set
- 위클리 챌린지
- lambda
- 정규식
- 이분탐색
- 백준
- python
- Zip
- DateTime
- KAKAO BLIND RECRUITMENT
- 수학
- 그리디
- 카카오
- java
- 동적 계획법
- 자바
- dfs
- Re
- Combinations
- 다익스트라
- backjoon
- BFS
- 정렬
- 파이썬
- heapq
- 프로그래머스
- Today
- Total
목록python (50)
상상쓰
https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 문제를 보고 점화식을 잘 만들면 된다. P[N] = P[N-2] + P[N-3] (N >= 4) P[1] = P[2] = P[3] = 1 import sys T = int(sys.stdin.readline()) for i in range(T): N = int(sys.stdin.readline()) p = [0] * (N + 2) p[1], p[2] = 1, 1 for i in range(3, N+1):..
https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 2021년은 윤년이 아니다. import sys Y = int(sys.stdin.readline()) answer = 1 if Y % 4 == 0 and (Y % 100 != 0 or Y % 400 == 0) else 0 print(answer)
https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 동적계획법으로 역순으로 dp[i] 를 정하였다. (dp[i] = i일부터 N일까지 일했을 때의 최대 이익) 걸리는 기간을 포함한 날짜가 N일을 넘어가면 일을 할 수 없는 경우이므로 dp[i] = dp[i+1] 일을 할 수 있는 경우에는 i일에 일을 하지 않았을 때와 i일에 일을 했을 때 중 최댓값을 dp[i] 로 설정한다. i 일에 일을 하지 않았을 때 : dp[i+1] (i+1일부터 N일까지 일했을 때의 최대 이익) i 일에 일을 했을 때 : p + dp[i+t] (i일에 일을 했을 때 얻는 이익 + (i+t)일부터 N일까지 일을 ..
https://programmers.co.kr/learn/courses/30/lessons/86052 코딩테스트 연습 - 빛의 경로 사이클 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진 programmers.co.kr 사이클은 전체를 분할 한다. 즉, A 하고 B 사이클이 있을 때, A = B 이거나 A ∩ B = Φ 이다. 하나의 사이클의 원소는 grid[][] 에서 가지는 방향(상, 하, 좌, 우)라고 할 수 있다. 1. grid[][] 에서 상(-1, 0), 하(1, 0), 좌(0, -1), 우(0, 1) 를 시작으로 사이클을 만든다. 2. ..
https://programmers.co.kr/learn/courses/30/lessons/86048 코딩테스트 연습 - 7주차 사회적 거리두기를 위해 회의실에 출입할 때 명부에 이름을 적어야 합니다. 입실과 퇴실이 동시에 이뤄지는 경우는 없으며, 입실 시각과 퇴실 시각은 따로 기록하지 않습니다. 오늘 회의실에는 programmers.co.kr 서로 반드시 만나는 경우는 entrance(= 입실한 사람) 중 퇴실 명부의 1순위가 있으면 바로 퇴실 했을 때, 만나는 경우를 말한다. 예를 들어, entrance 에 {1, 2, 3, 4, 5} 가 있고 퇴실 명부의 1순위 즉, leave 의 첫 번째 원소가 1이라고 하자. 그럼 1번이 나가면서 answer[1-1] 은 2, 3, 4, 5번이랑 반드시 만났으므..
https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net Node class 를 만들어 트리 순회를 해보았다. dic[i] = Node(i) (i 는 'A' ~ 'Z') 를 만들고 주어지는 입력을 바탕으로 dic[i].left = dic[left], dic[i].right = dic[right] 로 왼쪽 자식 노드 또는 오른쪽 자식 노드에 알맞는 노드를 준다. '.' 은 생략한다. 다음 재귀를 이용하여 전위 순회, 중위 순회, 후위 순회를 구..
https://programmers.co.kr/learn/courses/30/lessons/85002 코딩테스트 연습 - 6주차 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 한 행을 수행하면서 정렬할 조건의 값들을 모두 구한다. [승률, 자기보다 무거운 복서를 이긴 횟수, 몸무게, 선수 번호] 위 배열의 순서대로 비교하고 승률, 자기보다 무거운 복서를 이긴 횟수, 몸무게는 내림차순으로 선수 번호는 오름차순으로 정렬해서 선수 번호를 출력해야 하므로 내림차순으로 정렬하는 조건의 값에 -1을 곱해준 다음 ..
https://programmers.co.kr/learn/courses/30/lessons/17687 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 나누기를 반복하여 구한 N진수를 result 에 더하여 최대 t * m 길이의 문자열을 만든다. p = t * m: break i += 1 answer = ''.join([result[i*m+p-1] for i in range(t)]) return answer print(solution(2, 4, 2, 1)) # 0111
https://programmers.co.kr/learn/courses/30/lessons/17686 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 정규식을 이용하여 file 의 숫자를 기준으로 split 한다. (\d+), 소괄호를 통해 숫자 형태의 문자열을 배열에 담아 [파일명(영문자), 파일명(숫자), .확장자] 로 전체 file 을 받아 file[0].lower() 과 int(file[1]) 로 오름차순으로 정렬한다. import re def solution(files): answer = ..
https://programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 우선, dic = {'A' : 1, 'B' : 2, ..., 'Z' : 26 } 를 만든다. s = 0, e = 1 로 설정하고 msg = 'KAKAO' 를 예로 들면, msg[s:e] 인 'K' 가 dic 에 있으면, e += 1 해서 'KA' 가 dic 에 존재하는지 비교한다. dic 에 없으면 그 전의 비교 문자인 'K' 즉, dic[msg[s:e]] 를 answer 에 담고 d..