목록 code review (147)
KEEP GOING
https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr [BFS + 3차원 배열] 방향에 따라 건설비용을 따로 저장할 수 있도록 visited..
https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 1. 연산자의 우선순위 조합 > itertools 모듈의 permutations 함수 사용 2. 주어진 우선순위대로 문자열 연산하기 > 재귀함수 구현★ from itertools import permutations # 재귀 def calc(op, idx, exp): if exp.isdigit(): return str(exp) else: if op[idx] ==..
https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr [효율성에서 실패한 코드] 문제를 보자마자 백트래킹이 생각나서 백트래킹으로 풀어봤다. 자리수를 기준으로 [1,2,4] 배열에 접근하는 방법을 떠올렸다. 자리수가 1일 때 [1], [2], [4] 자리수가 2일 때 [1,1], [1,2], [1,4], [2,1], [2,2], [2,4], [4,1], ]4,2], [4,4]에 접근한다. 이렇게 쭉 찾다가 우리가 원하는 n에 대응하는 124숫자를 발견하면 if num == targetN: check 변수를 통해 탐색을 종료하는 방식으로 구현해봤다. 하지만 정확성 부분에서는 모두 정답 처리..
https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 양수 배열과 음수 배열을 따로 두어 양수는 오름차순, 음수는 내림차순으로 정렬한 뒤 그리디하게 접근했다. 숫자 두개씩 묶어 곱할 때, 큰 수를 만들기 위한 Best case는 1. 양수(1이 아님) * 양수(1이 아님) 2. 음수 * 음수 3. 음수 * 0 n = int(input()) answer = 0 zeroCount = 0 pos, neg = [], [] for _ in range(n):..
https://www.acmicpc.net/problem/3048 3048번: 개미 T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다. www.acmicpc.net [구현] n1, n2 = map(int, input().split()) ant1 = list(input()) ant2 = list(input()) path = ant1[::-1] + ant2 t = int(input()) for _ in range(t): for i in range(len(path)-1): # 두 개미 그룹이 만났다면 자리를 바꾼다. if path[i] in ant1 and path[i+1] in ant2: path[i], path[i+1] =..
https://www.acmicpc.net/problem/2884 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net [수학] 우선 m이 45보다 클 경우, 45를 빼주기만 하면 되기에 if else 문으로 나눈다. m이 45보다 작을 경우, h가 0인 경우 23시로 처리하고 m은 45를 빼고나서 60을 더해준다. h가 0보다 큰 경우 (1~23) h는 1만 빼주고 m은 45를 빼고나서 60을 더해준다. h, m = map(int, input().split()) if m - 45 < 0: if h == 0: h, m = ..
https://www.acmicpc.net/problem/2457 2457번: 공주님의 정원 첫째 줄에는 꽃들의 총 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 각 꽃이 피는 날짜와 지는 날짜가 주어진다. 하나의 날짜는 월과 일을 나타내는 두 숫자로 표현된다. 예를 들어서, www.acmicpc.net [그리디] - 월에 100을 곱하고 일을 더해서 날짜 형식을 변환하는 방식 참고 - 또 다른 접근법 from datetime import date date(2022, 3, 1).toordinal() # 738215 -> 1년 1월 1일을 기준으로 전체 일수 계산 date(1,1,1).toordinal() # 1 periods = [] answer = 0 n = int(input..
https://www.acmicpc.net/problem/10597 10597번: 순열장난 kriii는 1부터 N까지의 수로 이루어진 순열을 파일로 저장해 놓았다. 모든 수는 10진수로 이루어져 있고, 모두 공백으로 분리되어 있다. 그런데 sujin이 그 파일의 모든 공백을 지워버렸다! kriii가 순 www.acmicpc.net 우선 1부터 N까지 구성된 수열을 복구하기 위해서는 N보다 큰 숫자는 제외하고 N까지만 찾아야 하기 때문에 N이 무엇일지 알아야 한다. N은 주어진 문자열 kriii = '4111109876532' 의 길이를 통해 찾을 수 있다. 문자열의 길이가 10보다 작은 경우 N = len(krii) 문자열의 길이가 10보다 클 경우 N = 9 + (len(krii)-9)//2 예를들어,..