문제풀이 245

[파이썬] [DP] 백준 27210 신을 모시는 사당

문제 신을 모시는 사당에는 신을 조각한 돌상 N개가 일렬로 놓여 있다. 각 돌상은 왼쪽 또는 오른쪽을 바라보고 서있다. 창영이는 연속한 몇 개의 돌상에 금칠을 하여 궁극의 깨달음을 얻고자 한다. 궁극의 깨달음을 얻기 위해서는 가능한 한 많은 금색 돌상들이 같은 방향을 바라보아야 한다. 방향이 다른 돌상은 깨달음에 치명적이다. 깨달음의 양은 아래와 같이 정의된다. | (왼쪽을 바라보는 금색 돌상의 개수) - (오른쪽을 바라보는 금색 돌상의 개수) | 창영이는 궁극의 깨달음을 얻을 수 있을까? 입력 첫째 줄에 돌상의 개수 N이 주어진다. 둘째 줄에 돌상이 나열된 순서대로, 각 돌상이 바라보고 있는 방향이 주어진다. 입력의 편의상 왼쪽은 1, 오른쪽은 2라고 하자. 출력 최대한 많은 깨달음을 얻기 위해 금을 ..

문제풀이/DP 2023.01.14

[파이썬] [백트래킹] 백준 12919 A와 B 2

문제 https://www.acmicpc.net/problem/12919 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 코드 s=input() t=input() def dfs(t): if s==t: print(1) exit(0) if len(t)==0: return if t[-1]=='A': dfs(t[:-1]) if t[0]=='B': dfs(t[1:][::-1]) dfs(t) print(0) 생각 정리 핵심은 S를 T로 바꾸는 게 아니라, T를 S로 바꾸는 것입니다..

문제풀이/기타 2023.01.12

[파이썬] [문자열] 백준 20291 파일 정리

문제 https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 코드 n=int(input()) array=[input().rstrip() for _ in range(n)] dict={} for i in array: temp=i.split(".") if temp[1] in dict: dict[temp[1]]+=1 else: dict[temp[1]]=1 dict=sorted(dict.items()) for i,j in dict: print(i,j) 생각 정리 # ..

문제풀이/기타 2023.01.10

[파이썬] [문자열] 백준 17413 단어 뒤집기 2

문제 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 코드 st=input() flag=False arr=[] for value in st: if value=="": print(value, end="") flag=False continue if flag==False: if value==" ": while arr: print(arr.pop(), end="") print(end=" ") continue arr.app..

문제풀이/기타 2023.01.09

[파이썬] [문자열] 백준 17609 회문

문제 https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 코드 t = int(input()) def cal(st): left = 0 right = len(st) - 1 while left < right: if st[left] == st[right]: left += 1 right -= 1 else: # 오른쪽 잘못 된 경우 temp = st[:right] + st[right + 1:] if temp[:] == temp[::-1]: return 1 # 왼쪽 잘못 된 경우 temp ..

문제풀이/기타 2023.01.07

@[파이썬] [문자열] 백준 20437 문자열 게임 2

문제 https://www.acmicpc.net/problem/20437 20437번: 문자열 게임 2 첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다. www.acmicpc.net 코드 from collections import defaultdict t = int(input()) for _ in range(t): st = input() n = int(input()) dict = defaultdict(list) for index, value in enumerate(st): dict[value].append(index) result3 = 10001 result4 = -..

문제풀이/기타 2023.01.06

@[파이썬] [문자열] 백준 3107 IPv6

문제 https://www.acmicpc.net/problem/3107 3107번: IPv6 첫째 줄에 올바른 IPv6 주소가 주어진다. 이 주소는 최대 39글자이다. 또한, 주소는 숫자 0-9, 알파벳 소문자 a-f, 콜론 :으로만 이루어져 있다. www.acmicpc.net 코드 address=input() arr=[] if "::" in address: address=address.split("::") address[0]=address[0].split(":") address[1]=address[1].split(":") temp=len(address[0])+len(address[1]) for i in address[0]: arr.append(i) for _ in range(8-temp): arr.ap..

문제풀이/기타 2023.01.04

[파이썬] [문자열] 백준 1764 듣보잡

문제 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 코드 import sys input=sys.stdin.readline n,m=map(int, input().split()) array1=[input().strip() for _ in range(n)] array2=[input().strip() for _ in range(m)] result=list(set(array1) & set(array2)) result.sort() print(len(r..

문제풀이/기타 2023.01.03

[파이썬] [재귀] 백준 2447 별 찍기 - 10

문제 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 코드 def draw_stars(n): if n==1: return ['*'] Stars=draw_stars(n//3) L=[] for star in Stars: L.append(star*3) for star in Stars: L.append(star+' '*(n//3)+star) for star in Stars: L.append(star*3) return L N=..

문제풀이/기타 2023.01.02

[파이썬] [기타] 백준 6588 골드하브의 추측

문제 https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net 코드 import sys import math input=sys.stdin.readline n=1000000 array=[True for _ in range(n+1)] for i in range(2, int(math.sqrt(n))+1): if array[i]==True: k=2 while k*i

문제풀이/기타 2022.12.30