백준 383

[baekjoon] 백준 1323번(파이썬): 숫자 연결하기

문제 1323번: 숫자 연결하기 첫째 줄에 N과 K가 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. K는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 알고리즘 - 나머지 연산을 하고 나머지가 0인지 확인한다. - 나머지가 0이면 연산 횟수를 출력한다. - 0이 아니라면 str으로 같은 수를 더하는 연산을 한다. - set() 자료형에 나누어야 하는 수를 추가하고 나누어야 하는 수가 set() 집합에 포함되어 있으면 무한 루트 이므로 -1을 출력한다. 코드 import sys n, k = map(str, sys.stdin.readline().split()) cnt = 0 # 연산 횟수 temp = n # 같은 수를 더하는 연산을 해줄 변수 paper = s..

CodingTest/Baekjoon 2021.10.20

[baekjoon] 백준 17219번(파이썬): 비밀번호 찾기

문제 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 알고리즘 - 딕셔너리 자료형을 통해 문제를 수행한다. - 반복문으로 사이트의 주소와 비밀번호를 입력받아 딕셔너리에 담는다. - 반복문으로 찾고자 하는 비밀번호의 주소를 딕셔너리에 넣어 비밀번호를 출력한다. 코드 import sys n, m = map(int, sys.stdin.readline().split()) site = dict() # 딕셔너리형 # 반복문을 통해 사이트의 주소와 비밀번호를 입력받아 딕셔너리에 담는다. for..

CodingTest/Baekjoon 2021.10.20

[baekjoon] 백준 17608번(파이썬): 막대기

문제 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 알고리즘 - 맨 뒤에 있는 막대기를 제일 높은 막대기로 초기화한다. - 반복문을 통해 막대기의 높이를 확인한다. - 제일 높은 막대기보다 현재 막대기의 높이가 크면 제일 높은 막대기를 현재 막대기로 초기화해준다. - 제일 높은 막대기가 바뀔때마다 카운트한다.(처음에 맨 뒤에 있는 막대기를 제일 높은 막대기를 초기화했기 때문에 카운트를 1로 초기화) 코드 import sys n = int(sys.stdin.readline()) stack = [int(sys.stdi..

CodingTest/Baekjoon 2021.10.19

[baekjoon] 백준 1043번(파이썬): 거짓말

문제 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 알고리즘 - set() 자료형을 통해 진실을 아는 사람과 파티에 참여하는 사람을 입력받는다. - 파티의 수만큼 반복하여 파티에서 진실을 아는 사람이 포함되어 있는 파티를 찾는다. 파티의 수만큼 반복하는 이유는 모든 파티를 확인 후 진실을 아는 사람이 더 생길 경우 모든 파티를 한번 더 확인해줘야 하기 때문이다. 따라서 최대 파티의 수만큼 반복하여 진실을 아는 사람을 찾아야 한다. - 반복문을 통해 각 파티의 참여한 사람을 확인하고 파티의 참여한 사람 중 진실을 아는 ..

CodingTest/Baekjoon 2021.10.18

[baekjoon] 백준 2075번(파이썬): N번째 큰 수

문제 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 알고리즘 - 리스트 안에 미리 제일 작은 수를 넣어놓는다. - 비교할 수도 제일 작은 수로 초기화시킨다. - 각 행의 열의 크기를 비교하면서 타겟보다 큰 수라면 큰 수를 heap 리스트에 추가한다. - 다음으로 heap 리스트에 제일 작은 수를 팝하고 그 수를 타겟으로 바꾼다. - n번째로 큰 값을 구하는 것으로 n번째보다 큰 수이면 리스트에 제일 작은 수를 팝한 후 큰 수를 heap 리스트에 넣는 방법을 문제를 수행했다. 코드 import heapq import..

CodingTest/Baekjoon 2021.10.17

[baekjoon] 백준 1525번(파이썬): 퍼즐

문제 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net 알고리즘 - bfs 탐색을 통해 문제를 수행한다. - 퍼즐 모양과 그 모양을 만들기까지 걸린 횟수를 딕셔너리형을 처리하여 무한 루프에 빠지지 않게 하고 답을 도출한다. - 빈 공간(0)에 인덱스를 찾고 그래프에서 빈 공간의 x 좌표와 y 좌표를 찾는다. - 상/하/좌/우를 탐색하여 빈 공간의 인덱스와 현재 좌표를 바꾼다. - 현재 퍼즐 모양이 없다면 딕셔너리에 추가하고 이 과정을 반복하여 정리된 모양의 퍼즐을 찾는다. 코드 import sys from collections import deque # bfs 탐색 def bfs(): d..

CodingTest/Baekjoon 2021.10.16

[baekjoon] 백준 1939번(파이썬): 중량제한

문제 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net 알고리즘 - 이분 탐색과 bfs 탐색을 통해 문제를 수행한다. - 이분 탐색을 통해 현재 중량을 구하고 그 중량으로 다리를 건널 수 있는지 bfs 탐색을 통해 확인한다. 코드 import sys from collections import deque # bfs 탐색 def bfs(): queue = deque([start]) visited[start] = True # 큐가 없을 때까지 반복 while..

CodingTest/Baekjoon 2021.10.15

[baekjoon] 백준 7662번(파이썬): 이중 우선순위 큐

문제 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 알고리즘 - 테스트 케이스만큼 반복하고 연산의 수만큼 반복하여 연산을 수행한다. - 삽입 연산인 경우 최대 힙과 최소 힙을 나누어 푸시하고 정수의 여부를 체크한다. - 제거 연산의 경우 조건문을 통해 최대 힙을 제거할 건지 최소 힙을 제거할 건지 확인한다. - 최대 힙이나 최소 힙 모두 반복문을 통해 이미 제거된 정수가 있는지 확인하고 있다면 팝하여 제거한다. - 그 후 최대 힙이나 최소 힙을 팝하여 제거한다. - 연산이 끝나고 정수가 없다면 "EMPT..

CodingTest/Baekjoon 2021.10.14

[baekjoon] 백준 3986번(파이썬): 좋은 단어

문제 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 알고리즘 - 단어의 수만큼 반복하여 단어를 확인한다. - 반복문을 통해 입력받은 단어의 문자열을 확인한다. - 스택 구조를 이용하여 스택의 마지막 요소와 현재 탐색하고 있는 요소가 같으면 아치형이 되므로 스택의 마지막 요소를 팝해준다. - 그렇지 않다면 스택에 추가한다. - 반복문을 끝내구 스택의 길이가 1이면 아치형으로 모두 연결된 것으로 좋은 단어이다. - 스택에 길이가 1인 이유는 처음에 스택에 0을 넣었기 때문이다. 코드 import sys n = int(sy..

CodingTest/Baekjoon 2021.10.13

[baekjoon] 백준 1302번(파이썬): 베스트셀러

문제 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 알고리즘 - collections 모듈에 Counter 클래스를 사용한다. - 람다 정렬을 통해 개수를 내림차순으로, 이름을 오름차순으로 정렬한다. 코드 import sys from collections import Counter n = int(sys.stdin.readline()) temp = [] for _ in range(n): temp.append(str(sys.stdin.readline().strip())) res = Counter(temp..

CodingTest/Baekjoon 2021.10.12