본문 바로가기

코딩테스트

(10)
[백준] 17144번 : 미세먼지 안녕! - 파이썬 아이디어 : 구현, 4방위 탐색, 배열 돌리기 나의 답안 import sys input = sys.stdin.readline R, C, T = map(int, input().split()) graph=[] for _ in range(R): graph.append(list(map(int, input().split()))) for i in range(R): if graph[i][0] == -1: machine_up = i machine_down = i + 1 break dy = [1, 0, -1, 0] dx = [0, -1, 0, 1] def spread(): global graph temp = [[0 for _ in range(C)] for _ in range(R)] for r in range(R): fo..
[백준] 16236번 : 아기 상어 - 파이썬 아이디어 : 구현, BFS, 자주쓰는 함수 정의 BFS 기반 알고리즘 문제로, 아기 상어와 가까운 곳부터 지나갈 수 있는 길을 탐색한다. 이때, 일반적인 BFS 와 다르게 지나갈 수 있는 길에 아기 상어가 먹을 수 있는 후보 물고기가 있는 경우 "가장 위쪽->왼쪽" 물고리를 먹고, 다시 BFS 알고리즘을 사용해야한다. 따라서, 임시 자료구조에 같은 Level(거리)의 원소를 모아서 특정 로직을 수행한 뒤, Queue에 후보 path를 넣어야한다. * 특정 로직 : 후보 물고기가 있는 지 & 있다면 물고기 선택 등 즉, Queue안에는 항상 같은 Level(거리)의 원소만 존재하게된다. 문제 해결 과정 1. 초기 아기 상어 위치를 queue 자료구조에 put 한다. 2. 4방위 탐색으로 후보 물고기 & p..
[백준] 16926번 : 배열 돌리기 1 - 파이썬 아이디어 : 구현 문제 해결 과정 배열을 돌리는 문제 ! 1. 가장 밖의 배열을 돌린다. 2. 안의 배열을 돌린다. (min(N,M)//2 반복) 3. 위 과정을 R 번 반복한다. 배열을 돌리는 방법은 좌, 하, 우, 상 으로 범위를 나눠서 인덱스를 조정해준다. graph[y][x ] : 좌, 하, 우, 상 인 경우 나눠서 y, x 인덱스 조정 prev_value : 현제 차례에 배열에 넣어야 할 값 저장 next_value : 다음 차례에 배열에 넣어야 할 값 저장 나의 답안 import sys input = sys.stdin.readline N, M, R = map(int, input().split()) graph = [] for _ in range(N): graph.append(list(map(st..
[백준] 10815번 : 숫자 카드 - 파이썬 아이디어 : 딕셔너리, 해시테이블, 이분탐색 자료구조 - 딕셔너리 : 키(key)와 값(value)의 쌍으로 이루어진 자료구조 - 키를 기준으로 중복된 값을 가질 수 없음 - 키와 값 모두 어떤 자료형이든 사용이 가능함 딕셔너리는 데이터베이스에서 사용되는 해시 테이블(hash table) 구조를 기반으로 구현되며, 따라서 매우 빠르게 조회와 추가, 삭제가 가능함 ※ 딕셔너리 생성, 값 조회, 키-값 쌍 추가, 키-값 쌍 제거, .keys(), .values(), .items() my_dict = {'apple': 1, 'banana': 2, 'orange': 3} # 딕셔너리 키를 사용하여 값 조회 print(my_dict['apple']) # 1 # 딕셔너리 새로운 키-값 쌍 추가 my_dict['me..
[백준] 14497번 : 주난의 난 - 파이썬 아이디어 : BFS, 2차원 리스트, deque 파이썬 2차원 리스트 생성 # 3 x 4 이차원 리스트 생성 matrix = [[0 for j in range(4)] for i in range(3)] 위 코드에서 range() 함수를 사용하여 각 행과 열의 길이를 지정하고, 0으로 초기화된 리스트를 생성함 파이썬 2차원 배열 입력 in_graph = [] for _ in range(N): in_graph.append(list(map(str, input().strip()))) list(map(str, input().strip())) 는 입력된 문자열을 입력받아 str 자료형으로 변환한 리스트를 를 반환함 in_graph 는 각 N행의 리스트 원소를 입력 받음 파이썬 deque 자료구조 from collec..
[백준] 2178번 : 미로 탐색 - 파이썬 아이디어 : BFS, 큐 ChatGPT : BFS 알고리즘 BFS(너비 우선 탐색) 알고리즘은 그래프를 탐색하는 알고리즘 중 하나로, 시작 정점에서 시작해서 그래프를 한 층씩 모두 탐색하는 방법입니다. 즉, 시작 정점으로부터 가장 가까운 정점부터 방문하며, 같은 거리에 있는 정점들을 모두 방문한 후에 다음 단계로 넘어가는 방식입니다. BFS 알고리즘은 큐(Queue) 자료구조를 사용하여 구현할 수 있습니다. 먼저, 시작 정점을 큐에 넣고, 큐에서 정점을 하나씩 빼면서 해당 정점과 연결된 모든 정점들을 큐에 넣습니다. 그리고 큐에서 다시 정점을 빼면서 그 정점과 연결된 모든 정점들을 큐에 넣습니다. 이러한 과정을 반복하여 모든 정점을 방문합니다. BFS 알고리즘은 그래프의 모든 정점과 간선을 한 번씩 방문..
[백준] 17609번 : 회문 - 파이썬 아이디어 : 구현, 문자열, 두 포인터, 함수 문제 해결 과정 1. 양 끝에서 대칭으로 문자열을 비교한다. 2. 문자가 다르면, 한번 더 대칭으로 문자열을 비교한다. (문자열이 모두 같으면 회문 "0") 2-1. 오른쪽 인덱스 한칸 건너띄고 비교 2-2. 왼쪽 인덱스 한칸 건너띄고 비교 3. 이전 단계 2-1, 2-2 를 수행했을 때, 문자열이 모두 같으면 유사회문 "1", 다른 경우가 있으면 "2" 나의 답안 import sys input = sys.stdin.readline T = int(input().strip()) def strCheck(str, l, r): while l
[백준] 10799번 : 쇠막대기 - 파이썬 아이디어 : 스택 ChatGPT : 스택 알고리즘 스택(Stack)은 후입선출(Last In, First Out, LIFO)의 자료구조로, 데이터를 넣고(push) 빼내는(pop) 동작을 지원합니다. 스택은 쌓아올린 책처럼 위에서부터 차곡차곡 쌓아 올리는 구조를 가지고 있습니다. 스택 알고리즘은 스택을 활용하여 문제를 해결하는 알고리즘입니다. 스택을 이용하면 반복문이나 재귀함수 등에서 현재 처리 중인 데이터의 상태를 저장하고 나중에 다시 불러와 처리할 수 있습니다. 스택 알고리즘은 다양한 분야에서 활용됩니다. 예를 들어, 컴퓨터 과학에서는 함수 호출 시 함수 호출 정보를 스택에 저장하고, 그 함수가 끝나면 스택에서 정보를 꺼내서 호출한 곳으로 돌아갑니다. 또한, 미로찾기, 수식 계산 등에서도 스택 알고리..