목록백준 (39)
코테 탈출일지
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 접근 방식 - 효율적인 조건문 작성법 고민 - 데크의 기본 함수 확인 코드 풀이 from collections import deque import sys deq = deque() n = int(input()) for _ in range(n): # order = list(map(str, input().split(' '))) 대신 아래의 방법 사용 order = sys.stdin.re..
https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 접근 방식 - 문자열 탐색 전략 고민 코드 풀이 alphabet = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] word = str(input()) cnt=0 for alpha in alphabet: tmp = word.count(alpha) # 특수 알파벳이 단어에 몇개씩 들어가있는지 순서대로 탐색 cnt += t..
https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 접근 방식 - 점화식 세워보기 - 기본 조건 파악 - DP의 구현 방식 고민 코드 풀이 사실 코드 작성 계획을 세우며 돌의 갯수가 홀수이면 SK, 짝수이면 CY임을 발견했기 때문에 아래와 같이 간단하게 코드를 작성할 수도 있지만.. 동적 프로그래밍 연습을 위해 조금 더 고민을 이어 해봤습니다. n = int(input()) if n%2 == 1: print('SK') else: print('CY') 그래서 answerlist를 도입하여 answerlist[n]에 n개의 돌이 주어졌을때의 정보를 넣었고, 만들어진 리스트..
https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 접근 방식 - 전체 범위 수에서 셀프 넘버가 아닌 수를 빼는 방식으로 고민 - 셀프 넘버를 구하기 위한 전략 고민 (1부터 10000까지 순서대로 탐색하며 각 수에서 생성되는 모든 셀프 넘버가 아닌 수를 조사) 코드 풀이 num_list = list(range(1, 10001)) # 전체 범위 수 for num in range(1, 10001): ..
https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 접근 방식 - 단어별로 알파벳 순서대로 검사할 수 있는 방식 고민 - 경우의 수 분류 (처음 나온 알파벳, 이미 나온 알파벳) 및 count 시점 고민 코드 풀이 n = int(input()) cnt = 0 # 그룹 단어가 아닌 단어 for _ in range(n): abc = [] # 알파벳 집합 word = input() now = 0 # 현재 탐색중인 단어 f..
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 접근 방식 - 스택(stack)과 push, pop 개념 구현 방법 코드 풀이 from collections import deque n = int(input()) deq = deque() for _ in range(n): x = int(input()) if x == 0: # 0을 부르면 deq.pop() # 가장 최근 숫자 삭제 else: deq.append(x)..
https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 접근 방식 - 전체 영역 범위 설정 - 색종이 겹치는 영역 처리 방법 고민 - For loop를 어떻게 최소화 할 것인가 (시간초과) 코드 풀이 n = int(input()) # 색종이 수 check = [[0]*100 for _ in range(100)] # 전체 도화지 영역 cnt = 0 # 추후 check == 1 합산 위함 for a in range(n): x, y = map(int, inpu..