BOJ 5

2606 바이러스, 14502 연구소 - DFS/BFS

1. 2606 바이러스 1.1. 문제유형 그래프, BFS, DFS 1.2. 자료구조 Q (deque): BFS 구현을 위한 큐 자료구조 node (int): Q에서 꺼낸 현재 노드(Vertex) next (int): node와 연결되어 있으며 다음에 방문할 노드(Vertex) graph (2d-list): 인접 리스트(Adjacency list)로 노드에 연결된 간선(edge) 정보 저장 visited (1d-list): 방문 여부를 확인하는 리스트 1.3. 해결과정 ⭐1번 노드부터 BFS를 순회하며 방문한 장소는 True로 표시한다. 방문이 끝난 후 True의 개수를 출력한다. 이 때, 1번은 포함하지 않으므로 -1한 값을 출력한다. 1.4. 소스코드 from collections import dequ..

알고리즘 2021.08.25

백준 - 1654 랜선 자르기 [이분탐색]

1654 랜선 자르기 1. 문제유형 이분탐색, Binary Search 2. 자료구조 lans (list): 보유한 랜선의 길이를 저장하는 리스트 left, right (int): 랜선 최소길이, 최대길이 mid (int): 지정한 랜선 길이. left, right의 중간값 cnt (int): 잘라서 얻어낸 랜선 개수 3. 해결과정 최대 랜선 길이가 2^31-1이므로 이분탐색을 떠올렸다. 항상 n개의 랜선 개수를 만들 수 있으므로, 랜선 길이를 지정 후 n개가 되는지 테스트한다. 최대 범위가 2^31-1인 것을 깜빡해서 1차시도 때 오답으로 책정되었다. left, right를 지정하되 right의 범위는 2^31-1을 포함하도록 설정한다. mid 계산 후 cnt가 n을 만족하는 지 확인한다. cnt가 n..

카테고리 없음 2021.08.16

백준 1259번 : 팰린드롬이란?

📌문제 설명 팰린드롬이란? 팰린드롬이란 앞에서 읽으나 뒤에서 읽으나 똑같은 단어를 말합니다. 📌문제 접근 방식 이 문제는 입력받은 값을 문자열로 바꾼 뒤 뒤집어주기만 하면 되는 간단한 문제였습니다. 📌문제 해결 및 소스코드 import sys def solution(): while True: input_value = str(sys.stdin.readline().rstrip()) if input_value == '0': break target_value = input_value[::-1] if input_value == target_value: print("yes") else: print("no") return 0 solution()

알고리즘 2021.03.09

백준 1920번[수찾기] 문제풀이

문제 설명 📌문제 접근 방법 처음에 간단히 생각했던 방법은 '빈 리스트에 B가 A에 있으면 1, 없으면 0을 저장하자'였습니다. 1. 빈 리스트 생성 2. B가 A에 있다면 1, 없으면 0 리턴 📌1차 오답 소스코드 import sys M = int(sys.stdin.readline().rstrip()) A = list(map(int, sys.stdin.readline().rstrip().split())) N = int(sys.stdin.readline().rstrip()) B = list(map(int, sys.stdin.readline().rstrip().split())) def solution(A, B): res = [] for x in B: if x in A: res.append(1) else: ..

알고리즘 2021.03.07

백준 1181번[단어 정렬] 문제풀이

📌문제 설명 📌문제 접근 방식 1. 중복된 단어를 제거한다. 2. 글자 수로 정렬 후 알파벳 사전순으로 정렬한다. 📌몰랐던 점 sorting 기준을 lambda식으로 정의할 때 2가지 기준을 설정할 것 중복된 단어를 제거하는 건 set 자료구조를 사용해 간단히 해결할 수 있었다. 2단계에서 글자 수로 정렬하는 것도 문제없이 수행했으나 알파벳 사전순으로 정렬하는 과정에서 헷갈렸던 부분은 문자열 정렬을 어떻게 할 것인가였다. lambda 식을 이용해 정렬할 때 2개의 기준을 주고 싶었는데 문법이 기억나지 않았다. 그래서 직접 문자열 정렬을 하는 함수로 구현하다보니 시간이 오래걸렸다. sort함수의 key파라미터로 lambda 식을 넘겨줄 때 글자수와 문자열을 설정하면 간단한 문제였다. 📌소스코드 import..

알고리즘 2021.03.06