일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준12904
- 백준1339
- 프로그래머스
- Smart Commit
- 완주하지 못한 선수
- 백준2573
- 소수 만들기
- 키패드 누르기
- 움직이는 미로 탈출
- 124 나라의 숫자
- 백준
- 전기 요금
- 백준16234
- 인구 이동
- 백준16954
- 백준5710
- 단어 수학
- 백준1788
- 백준 14499
- 파이썬
- 경비원
- 백준3190
- A와 B
- 피보나치 수의 확장
- 빙산
- 로또의 최고 순위와 최저 순위
- 백준 2564
- 코딩테스트
- 부스트캠프
- 백준1697
- Today
- Total
목록알고리즘/프로그래머스 (7)
Today.dev
문제 49189번: 가장 먼 노드 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 맞은 풀이 from collections import deque def bfs(graph, n): q = deque() q.append((1, 0)) # 시작노드, 거리 visited = [-1 for x in range(n + 1)] visited[1] = 0 while q: x, d = q.popleft() for i in graph[x]: if visited[i] == -1: visited[i] = d + 1 q.append((i, d + 1)) max_val = max(visited) ret..
문제 42746번: 가장 큰 수 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 틀린 풀이 def solution(numbers): numbers = list(map(str, numbers)) numbers.sort(key=lambda x: (len(x), -int(x))) #1 return ''.join(numbers) #2 1. 리스트를 자릿수가 짧고 큰 숫자 순서로 정렬(#1)했는데 틀린 정렬 조건이다. 2. 리스트를 단순히 str로 합치는..
문제 12899번: 124 나라의 숫자 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 틀린 풀이 124 나라의 숫자가 중복 조합의 형태를 가지고 있다는 것을 발견했다. 124 나라의 숫자는 1의 자리수가 세 개, 2의 자리수가 9개, 3의 자리수가 27개, 즉 [3, 9, 27, 81, ... ] 과 같이 3의 제곱수 형태로 증가하기 때문에 내가 뽑을 숫자의 개수를 구하고(#1) 중복 순열을 구한 후 원하는 숫자를 택하는 형태(#2)로 코드를 구현했다. from itertools import product def solution(n): # 1. 숫자를 몇 개 뽑아야할지(cnt) 구한다. s, cnt = 0, 0 while s < n: cnt += 1 s += 3**cnt # 2...
문제 67256: 키패드 누르기 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 2차원 배열에 키패드 숫자를 넣자니 좌표 구하기가 힘들고 좌표를 넣자니 숫자를 못 구하고, 고민하다가 그냥 딕셔너리로 만들어버렸다. 그리고 bfs 쓸 필요 없는 거 제출하고 나서 알았다; 스스로 난이도 높여서 풀었더라 😥 혹시 이거 보시는 분들은 편하게 절댓값으로 거리 구하세요.. from collections im..
문제 77484번: 로또의 최고 순위와 최저 순위 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 풀이 일치하는 번호와 모르는 번호로 최고, 최저 순위를 만든다. 1. 일치하는 번호 개수 -> 최저 당첨 2. 일치하는 번호 개수 + 모르는 번호 개수 -> 최고 당첨 lottos, win_nums 리스트의 원소가 전부 다르다고 해도 선택할 수 있는 번호의 범위가 33개나 된다. 번호가 부족해서 선택할 수 없는 경우는 없다. def solution(lottos, wi..
문제 42576번: 완주하지 못한 선수 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 participant, completion 배열을 정렬하고 두 배열의 값이 어긋나는 순간에서 정답을 찾는다. 예를 들어 participant = [1, 2, 3, 3, 5], completion = [1, 2, 3, 5] 인 경우를 보자. 1 2 3 3 5 1 2 3 5 (1, 1), (2, 2), (3, 3)과 같이 계속 값이 일치하다 (3, 5) 처럼 값이 어긋나게 되면 그때의 participa..
문제 12977번: 소수 만들기 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 풀이 배열에서 고정적으로 3개를 뽑아서 검사해야 하기 때문에 조합을 사용해서 가능한 리스트를 만든다. 후에 반복문을 돌리며 숫자들의 총합이 소수인지 아닌지 구한다. import math from itertools import combinations def is_prime(n): # 소수 판별 for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return Fal..