일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 14499
- 움직이는 미로 탈출
- 백준3190
- 피보나치 수의 확장
- 백준
- A와 B
- 프로그래머스
- 키패드 누르기
- 백준1697
- 부스트캠프
- 124 나라의 숫자
- 파이썬
- 백준 2564
- 완주하지 못한 선수
- 전기 요금
- 백준12904
- 백준16234
- 소수 만들기
- 코딩테스트
- 로또의 최고 순위와 최저 순위
- 빙산
- 경비원
- 백준5710
- 백준1788
- 백준1339
- 인구 이동
- Smart Commit
- 단어 수학
- 백준2573
- 백준16954
- Today
- Total
목록알고리즘 (21)
Today.dev
문제 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...
AND 논리곱 & 연산자 이용 두 비트가 모두 1인 경우에만 1을 반환, 나머지는 0을 반환한다. OR 논리합 | 연산자 이용 두 비트 중 하나라도 1인 비트가 있다면 1을 반환, 나머지는 0을 반환한다. XOR 배타적논리합연산자 ^ 연산자 이용 두 비트가 다르다면 1을 반환, 같다면 0을 반환한다. XOR 연산을 이용한 풀이 동일한 값 두 개와 다른 값 한개가 입력으로 들어올 때, 다른 값을 선별하는 방법. x, y = 2, 3 print(x ^ x ^ y) # 출력 : 3
구현 1. 인접리스트로 표현된 그래프 BFS from collections import deque def bfs(n): q = deque() q.append(n) visited = [False] * 9 while q: n = q.popleft() print(n, end=' ') for i in graph[n]: if not visited[i]: q.append(i) visited[i] = True graph = [ # 각 노드가 연결된 정보를 2차원 리스트로 표현 [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4], [7], [2, 6, 8], [1, 7] ] 활용 1. 2차원 리스트에서 출발 노드와 목표 노드 사이 최단 거리 구하기 # 5 X 5 배열 # start ..
문제 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..
문제 1339번: 단어 수학 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다. 예를 들어, GCF + ACDEB를 계산한다고 할 때, A = 9, B = 4, ..