본문 바로가기

분류 전체보기263

[프로그래머스] Lv2 - n^2 배열 자르기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/87390 코딩테스트 연습 - n^2 배열 자르기 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부 programmers.co.kr def solution(n, left, right): arr = [] for i in range(left, right+1): arr.append(max(i // n, i % n)+1) return arr 풀이 1. left부터 right까지 해당 index가 2차원 배열이었을 때의 (인덱스 값들 중 최댓.. 2022. 5. 13.
[백준] 8980번 - 택배 (파이썬) # 택배 import sys input = sys.stdin.readline N, W = map(int, input().split()) box_num = int(input()) box_info = [] for _ in range(box_num): start, end, num = map(int, input().split()) box_info.append((start, end, num)) box_info.sort(key=lambda x: (x[1])) result = 0 arr = [W for _ in range(N+1)] for x, y, num in box_info: num = min(num, min(arr[x:y])) if num != 0: for i in range(x, y): arr[i] -= nu.. 2022. 5. 13.
[프로그래머스] Lv2 - 점프와 순간 이동 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr def solution(n): answer = 0 while n > 0: answer += n % 2 n //= 2 return answer 풀이 1. while문 ( n > 0 ) - 2로 나눈 나머지만큼 answer에 더해준다. - n을 2로 나누어준다. 2. answer 리턴 뒤로 가는 경우는 없고 두배로 순간 이동하거나 앞으로 이동.. 2022. 5. 4.
[프로그래머스] Lv2 - 이진 변환 반복하기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr def solution(s): answer = [0, 0] while s != '1': len_s = len(s) s = ''.join(s.split('0')) len_ns = len(s) s = bin(len(s))[2:] answer[0] += 1 answer[1] += len_s - len_ns return answer 풀이 1. while문 (1이 될 때까지) - 0을 제거 - 그 길이를 2진수로 바꿈 - answer[0] : 횟수 += 1, answer[1] : 0 제거 횟수 += 1 2. answer 리턴 bin을 이용해서.. 2022. 5. 4.
[백준] 1039번 - 교환 (파이썬) # 교환 from collections import deque N, K = map(int, input().split()) M = len(str(N)) def bfs(N, K): visited = set() visited.add((N, 0)) q = deque() q.append((N, 0)) answer = 0 while q: n, k = q.popleft() if k == K: answer = max(answer, n) continue n = list(str(n)) for i in range(M-1): for j in range(i+1, M): if i == 0 and n[j] == '0': continue n[i], n[j] = n[j], n[i] nn = int(''.join(n)) if (nn, .. 2022. 5. 4.
[프로그래머스] Lv2 - 모음사전 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr from itertools import product as pro def solution(word): result = [] for i in range(1,6): for x in pro(['A','E','I','O','U'], repeat=i): result.append(''.join(list(x))) result.s.. 2022. 5. 3.
[프로그래머스] Lv2 - 전력망을 둘로 나누기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/86971 코딩테스트 연습 - 전력망을 둘로 나누기 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr from collections import deque import sys def solution(n, wires): answer = sys.maxsize for i in range(len(wires)): new_wires = wires[:i] + wires[i+1:] arr = [[]for _ in range(n+1)] for x, y in new_wires: a.. 2022. 5. 3.