baekjoon 383

[baekjoon] 백준 2504번(파이썬): 괄호의 값

문제 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 알고리즘 - 입력받은 괄호를 반복문을 통해 확인한다. - "(" 와 "[" 이면 스택에 추가해준다. - ")" 경우와 "]" 경우는 조건문을 통해 나눠서 코드를 작성한다. 코드 import sys s = str(sys.stdin.readline().strip()) stack = [] # 입력받은 괄호를 반복문을 통해 확인한다. for i in s: # i가 "(", "[" 일 경우 스택에 추가 if i == "(" or i == "[": stack.app..

CodingTest/Baekjoon 2021.10.02

[baekjoon] 백준 1620번(파이썬): 나는야 포켓몬 마스터 이다솜

문제 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 알고리즘 - 포켓몬의 알파벳 문제는 딕셔너리 자료형으로 수행하고 숫자 문제는 리스트 자료형으로 수행한다. 코드 import sys n, m = map(int, sys.stdin.readline().split()) book_dic = {} book_list = [] # 포켓몬의 개수를 반복하여 포켓몬의 이름을 입력받는다. for i in range(n): poketmon = sys.stdin.readline().rstrip() #..

CodingTest/Baekjoon 2021.10.01

[baekjoon] 백준 2493번(파이썬): 탑

문제 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 알고리즘 - 반복문을 통해 탑의 높이를 확인한다. - 스택에 탑이 있는지 확인하고 스택에 탑이 있으면 현재 탑과 비교하고 없으면 스택에 현재 탑의 높이를 추가한다. - 스택에 탑의 높이를 추가할 때 탑의 위치까지 묶어서 추가하여 탑의 위치를 쉽게 찾게 한다. - 코드 주석을 확인하면서 보면 더 이해하기 쉬울 것이다. 코드 import sys n = int(sys.stdin.readline()) top = list(map(int, sys.stdin.read..

CodingTest/Baekjoon 2021.09.30

[baekjoon] 백준 11286번(파이썬): 절댓값 힙

문제 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 알고리즘 - heapq 모듈을 사용하여 문제를 수행한다. - 연산의 개수만큼 반복하여 연산에 대한 정보를 입력받는다. - 배열의 x 값을 넣을 때 절댓값을 우선순위로 하여 힙 푸시한다. 코드 import sys import heapq n = int(sys.stdin.readline()) heap = [] # 연산의 개수만큼 반복하여 연산에 대한 정보를 입력받아 수행한다. for i in range(n): x = int(sys.stdin...

CodingTest/Baekjoon 2021.09.29

[baekjoon] 백준 5430번(파이썬): AC

문제 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 알고리즘 - re 모듈과 deque 모듈을 사용하여 문제를 수행한다. - 테스트 케이스만큼 반복하여 문제의 최종 결과를 출력한다. - 수행해야할 함수를 반복하여 try- except문을 통해 조건을 수행한다. - 에러의 유무에 따라 최종 결과값을 출력한다. 코드 import sys import re from collections import deque t = int(sys.stdin.readline()) # 테스트 케이스만큼 반복하여 문제를 수행 for _ in range(t): p = sys.stdin.read..

CodingTest/Baekjoon 2021.09.28

[baekjoon] 백준 18258번(파이썬): 큐 2

문제 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 import sys from collections import deque n = int(sys.stdin.readline()) queue = deque() for i in range(n): order = sys.stdin.readline().split() if order[0] == "pop": if queue: print(queue.popleft()) else: print(-1) elif order[0] == "size": pr..

CodingTest/Baekjoon 2021.09.27

[baekjoon] 백준 1717번(파이썬): 집합의 표현

문제 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 알고리즘 - 부모 노드가 찾는 함수를 만든다. - a가 속한 집합과 b가 속한 집합을 합치는 함수를 만든다. - 부모 노드를 찾을 때 재귀함수를 통해 수행한다. 코드 import sys sys.setrecursionlimit(10**6) # a가 속한 집합과 b가 속한 집합 합치기 def union(x, y): x = parent(x) y = parent(y) # a와 b의 부모 노드가 같으면 동일한 집합이므로 리턴..

CodingTest/Baekjoon 2021.09.26

[baekjoon] 백준 1021번(파이썬): 회전하는 큐

문제 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 알고리즘 - 뽑아 내려고하는 수를 모두 뽑을 때까지 반복한다. - 현재 뽑아야하는 수가 큐의 앞쪽에서 뽑는게 더 가까운지 뒤쪽에서 뽑는게 더 가까운지 비교하여 수행한다. - 앞쪽에서 뽑는게 더 가깝다면 2번 연산을 수행하면서 뽑아야하는 원소의 위치를 찾는다. - 반대로 뒤쪽에서 뽑는게 더 가깝다면 3번 연산을 수행하면서 뽑아야하는 원소의 위치를 찾는다. - 연산을 할때마다 카운트 해주고 뽑아야하는 원소를 다 뽑았다면 카운트 한 것을 출력한다. 코드 im..

CodingTest/Baekjoon 2021.09.25

[baekjoon] 백준 1764번(파이썬): 듣보잡

문제 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 알고리즘 - Counter 클래스를 사용하여 이름의 수를 확인한다. - 반복문을 통해 이름의 수가 2 이상이고 리스트에 없는 요소라면 리스트에 추가한다. - 리스트를 오름차순으로 정렬 후 길이를 출력하고 반복문을 통해 이름을 출력한다. 코드 import sys from collections import Counter # collections 모듈에 Counter 클래스 사용 n, m = map(int, sys.stdin.readline().split())..

CodingTest/Baekjoon 2021.09.24

[baekjoon] 백준 3190번(파이썬): 뱀

문제 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 알고리즘 - 2차원 그래프로 표현한다. - 사과의 위치는 1로 표현한다. - 뱀이 지나간 위치는 2로 표현하여 다시 탐색하지 않게 한다. - 이동하면서 딕셔너리의 담은 방향 전환 정보를 확인한다. - 현재 시간이 지난 후 방향 전환이 해야 한다면 방향 전환 함수를 통해 방향 전환을 해준다. - 사과가 없다면 뱀의 꼬리를 제거한다. - 사과가 있다면 꼬리의 값은 수정하지 않는다. - 벽에 부딪히거나 몸에 부딪힌 경우 반복을 멈춰준다. 코드 import sys fro..

CodingTest/Baekjoon 2021.09.23