Algorithm/Baekjoon
-
[Python][C++] 18870번 좌표 압축Algorithm/Baekjoon 2024. 9. 14. 22:55
문제https://www.acmicpc.net/problem/18870 코드1. Pythonn = int(input()) # 배열의 크기를 입력받음arr = list(map(int, input().split())) # n개의 정수를 입력받아 리스트로 저장arr2 = sorted(set(arr)) # 중복을 제거하고 정렬하여 순서를 정함# 각 값에 대해 해당 값이 정렬된 리스트에서 몇 번째인지 저장하는 딕셔너리 생성dic = {arr2[i]: i for i in range(len(arr2))}# 입력받은 배열의 각 원소에 대해 압축된 좌표를 출력for i in arr: print(dic[i], end=' ') 2. C++#include #include #include #include usi..
-
[Python][C++] 18111번 마인크래프트Algorithm/Baekjoon 2024. 9. 12. 16:08
문제https://www.acmicpc.net/problem/18111 코드1. Pythonimport sysinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# n: 세로 크기, m: 가로 크기, b: 초기 인벤토리 블록 개수n, m, b = map(int, input().split())# 블록 배열 입력 받기blocks = [list(map(int, input().split())) for _ in range(n)]# 초기값 설정: 최소 시간(time)과 그때의 높이(height) 초기화time, height = 9223372036854775807, 0 # 큰 값으로 최소 시간 초기화# 가능한 모든 높이(0부터 256까지)에 대해 탐색f..
-
[Python][C++] 17626번 Four SquaresAlgorithm/Baekjoon 2024. 9. 11. 00:16
문제https://www.acmicpc.net/problem/17626 코드1. Pythonimport mathn = int(input()) # 입력으로 숫자 n을 받음dp = [0] * (n + 1) # DP 테이블 초기화 (0부터 n까지)dp[1] = 1 # 1은 제곱수 1로만 표현 가능하므로 dp[1] = 1# 2부터 n까지 최소 제곱수의 합을 찾기 위한 반복문for i in range(2, n + 1): min_value = 1e9 # 임의로 큰 값으로 초기화 (최솟값을 찾기 위해) # i보다 작은 제곱수들을 탐색하며 최소 값을 찾음 for j in range(1, int(math.sqrt(i)) + 1): min_value = min(min_val..
-
[Python][C++] 17219번 비밀번호 찾기Algorithm/Baekjoon 2024. 9. 10. 23:24
문제https://www.acmicpc.net/problem/17219 코드1. Pythonimport sysinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용n, m = map(int, input().split()) # n: 저장할 사이트 수, m: 찾을 사이트 수passwords = dict() # 사이트와 비밀번호를 저장할 딕셔너리# n개의 사이트와 비밀번호를 입력받아 딕셔너리에 저장for _ in range(n): site, pwd = input().rstrip().split() # 사이트와 비밀번호를 입력받고 passwords[site] = pwd # 딕셔너리에 사이트를 키로, 비밀번호를 값으로 저장# m개의 사이..
-
[Python][C++] 16928번 뱀과 사다리 게임Algorithm/Baekjoon 2024. 9. 8. 15:28
문제https://www.acmicpc.net/problem/16928 코드1. Pythonimport sysfrom collections import dequeinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# BFS(너비 우선 탐색) 함수 정의def bfs(v): visited = [0] * 101 # 방문 여부와 이동 횟수를 저장할 리스트 (0~100까지, 총 101칸) visited[v] = 1 # 시작점인 1번 칸은 방문했으므로 1로 설정 q = deque() # 탐색에 사용할 큐 생성 q.append(v) # 시작점(1번 칸)을 큐에 삽입 # 큐가 빌 때까지 BFS 탐색 진행 while q..
-
[Python][C++] 14940번 쉬운 최단거리Algorithm/Baekjoon 2024. 9. 7. 21:45
문제https://www.acmicpc.net/problem/14940 코드1. Pythonimport sysfrom collections import deque # BFS에서 사용할 큐를 위해 deque 라이브러리 임포트input = sys.stdin.readline # 입력을 빠르게 받기 위해 sys.stdin.readline 사용# 상하좌우 이동을 나타내는 방향 벡터 (dx는 x축, dy는 y축 이동을 의미)dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]# BFS(너비 우선 탐색) 함수 정의def bfs(x, y): q = deque() # 큐 생성 q.append([x, y]) # 시작 지점을 큐에 삽입 while q: x, y = q.p..
-
[Python][C++] 11727번 2×n 타일링 2Algorithm/Baekjoon 2024. 9. 6. 08:59
문제https://www.acmicpc.net/problem/11727 코드1. Python# n번째 값을 입력받음n = int(input())# DP 리스트 초기화, 미리 계산된 초깃값들을 저장dp = [0, 1, 3, 5] # 예시로 dp[1] = 1, dp[2] = 3, dp[3] = 5가 주어짐# dp 리스트에 저장된 값이 부족할 경우 n번째 값까지 계산for i in range(len(dp), n + 1): # 점화식을 이용하여 dp[i] 값을 계산 # dp[i-1] + dp[i-2] * 2 의 형태로 계산 dp.append(dp[i - 1] + dp[i - 2] * 2)# n번째 값을 10007로 나눈 나머지를 출력print(dp[n] % 10007) 2. C++#inc..
-
[Python][C++] 11726번 2×n 타일링Algorithm/Baekjoon 2024. 9. 6. 08:55
문제https://www.acmicpc.net/problem/11726 코드1. Python# 미리 계산된 값들을 저장하는 리스트 dp를 선언dp = [0, 1, 2, 3]# n을 입력받음 (계산할 n번째 값)n = int(input())# dp 리스트에 저장된 값이 부족할 경우를 대비하여 n번째 값까지 계산for i in range(len(dp), n + 1): # dp[i] = dp[i-1] + dp[i-2]의 점화식을 사용하여 값을 계산하고 리스트에 추가 dp.append(dp[i - 1] + dp[i - 2])# n번째 값을 10007로 나눈 나머지를 출력print(dp[n] % 10007) 2. C++#include using namespace std;int main() { ..