분류 전체보기 280

항해99 리부트코스 알고리즘 2주 5일차 백준 7562 나이트의 이동

https://www.acmicpc.net/problem/7562 from collections import dequedef bfs(start, end, l): # 나이트의 이동 방향 8가지 정의 directions = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)] # 방문 여부를 저장하는 2차원 리스트 visited = [[False] * l for _ in range(l)] # BFS를 위한 큐, 초기 위치와 이동 횟수를 함께 저장 queue = deque([(start[0], start[1], 0)]) # (x, y, 이동 횟수) while queue: x,..

Algorithm/백준 2024.07.29

항해99 리부트코스 알고리즘 2주 4일차 백준 13116 30번

https://www.acmicpc.net/problem/13116 def find_lca(a, b): # 주어진 노드 a와 b의 경로를 추적 path_a = [] path_b = [] # 루트 노드부터 a까지의 경로 while a >= 1: path_a.append(a) a //= 2 # 루트 노드부터 b까지의 경로 while b >= 1: path_b.append(b) b //= 2 # 공통 조상 찾기 path_a = set(path_a) for node in path_b: if node in path_a: return node# 입력을 처리하여 문제를..

Algorithm/백준 2024.07.27

lambda 함수란?

lambda 함수란? lambda 함수는 파이썬에서 익명 함수(이름이 없는 함수)를 생성하기 위해 사용된다. lambda 함수는 간단한 함수를 정의할 때 유용하다 일반 함수와 lambda 함수의 차이는 다음과 같다:일반 함수는 def 키워드를 사용하여 정의되며, 이름이 있다.lambda 함수는 lambda 키워드를 사용하여 정의되며, 이름이 없다.람다 함수 문법은lambda 인자들: 표현식인자들: 함수가 받을 인자들표현식: 함수가 반환할 값 ex)# 일반 함수def add(x, y): return x + y# lambda 함수add_lambda = lambda x, y: x + y# 사용print(add(2, 3)) # 출력: 5print(add_lambda(2, 3)) # 출력: 5 ..

항해99 리부트코스 알고리즘 2주 3일차 백준 1181 단어 정렬

https://www.acmicpc.net/problem/1181    단어 목록이 주어졌을 때, 단어를 정렬하는 프로그램을 작성정렬 기준은 두 가지다길이가 짧은 것부터길이가 같으면 사전 순으로  즉,  주어진 단어 목록에서 중복을 제거중복이 제거된 단어 목록을 정렬(정렬의 기준은 단어의 길이, 단어 자체) 해야 한다.   1.단어 목록을 입력받고2.중복을 제거3.정렬된 단어 목록을 출력 순으로 코드를 작성해보자  import sysinput = sys.stdin.read# 입력 받기data = input().split()n = int(data[0])words = data[1:]# 중복 제거unique_words = list(set(words))# 정렬unique_words.sort(key=lambda ..

Algorithm/백준 2024.07.26

항해99 리부트코스 알고리즘 2주 3일차 백준 18870 좌표 압축

https://www.acmicpc.net/problem/18870  주어진 좌표 리스트에서 각 좌표를 압축하여 새로운 좌표 리스트를 만듦압축된 좌표는 각 좌표의 크기 순서에 따라 번호를 매기는 방식예, 주어진 좌표가 [2, 4, -10, 4, -9]라면, 이 좌표를 크기 순으로 정렬하면 [-10, -9, 2, 4, 4]가 된다. 이때 압축된 좌표는 [2, 4, 0, 4, 1]입니다.접근 방법 주어진 좌표 리스트에서 중복을 제거하고 정렬하여 순위를 매긴다원래 좌표 리스트에서 각 좌표의 압축된 값을 찾는다. 즉, 이를 순서대로 구체적으로 표현하면 다음과 같다.  좌표 리스트를 입력받는다중복을 제거한 후 정렬된 좌표 리스트를 만든다정렬된 좌표 리스트를 이용해 각 좌표의 압축된 값을 딕셔너리에 저장원래 좌표 ..

Algorithm/백준 2024.07.26

항해99 리부트코스 알고리즘 2주 3일차 백준 1946 신입 사원

https://www.acmicpc.net/problem/1946   풀이 문제의 핵심은 두 가지 성적 중 하나라도 다른 지원자보다 떨어지면 선발되지 않는다는 점이다 각 지원자는 두 가지 성적(서류 심사 성적, 면접 성적)을 가지고 있음한 가지 성적이라도 다른 지원자보다 떨어지지 않으면 선발  문제 해결 전략정렬: 서류 심사 성적을 기준으로 지원자들을 오름차순으로 정렬최소 면접 성적 갱신: 서류 심사 성적이 낮은 순서대로 면접 성적을 확인하면서, 현재까지의 최소 면접 성적을 갱신선발 기준: 현재 면접 성적이 최소 면접 성적보다 좋다면 그 지원자는 선발. 예를 들어, 지원자가 5명이고 서류 심사 및 면접 성적이 다음과 같다 (참고로 숫자는 순위임에 유의, 헷갈리지말자) 서류 심사               ..

Algorithm/백준 2024.07.26

항해99 리부트코스 알고리즘 2주 3일차 백준 1026 보물

https://www.acmicpc.net/problem/1026  풀이  배열 A와 배열 B를 세팅배열 A는 오름차순으로 정렬하고, 배열 B는 내림차순으로 정렬배열 A와 배열 B의 요소를 순서대로 곱하여 그 합을 구한다 import sysinput = sys.stdin.read# 입력 받기data = input().split()n = int(data[0])A = list(map(int, data[1:n+1]))B = list(map(int, data[n+1:2*n+1]))def minimum_sum(A, B): # A는 오름차순으로 정렬 A.sort() # B는 내림차순으로 정렬 B.sort(reverse=True) # 두 배열의 요소를 곱한 후 합산 result = s..

Algorithm/백준 2024.07.26

항해99 리부트코스 알고리즘 2주 2일차 백준 14235 크리스마스 선물

https://www.acmicpc.net/problem/14235   풀이import heapqimport sysinput = sys.stdin.readlinedef main(): n = int(input().strip()) # 명령의 개수 N을 입력받음 max_heap = [] # 빈 리스트를 최대 힙으로 사용 for _ in range(n): command = list(map(int, input().strip().split())) if command[0] == 0: # 선물을 받아야 하는 경우 if max_heap: # 힙이 비어있지 않으면 가장 큰 선물 출력 후 제거 ..

Algorithm/백준 2024.07.25