전체 글

알고리즘

14405-백준-피카츄

1. 문제 출처 https://www.acmicpc.net/problem/14405 14405번: 피카츄 피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문 www.acmicpc.net 2. 풀이 단순 구현 # 입력 talk = input() pikachu = ["pi","ka","chu"] idx = 0 # 해당 문자열로 이루어져 있는지 확인 def solution(check,idx): flag = True if talk[idx:idx+len(check)] == check: idx+=len(check) else: flag..

알고리즘/그리드 알고리즘

1969-백준-DNA

1. 문제 출처 https://www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net 2. 풀이 그리디 알고리즘을 이용한 문제이다.. 힌트에 브루투포스 알고리즘도 적혀있던데 왜일까?? hamming_distance 구하는 과정이 모든 dna와 연산해야 해서 그런가? # 입력 n,m = map(int,input().split()) dnas = [] for _ in range(n): dnas.append(input()) # ..

알고리즘

1755-백준-숫자놀이

1. 문제 출처 https://www.acmicpc.net/problem/1755 1755번: 숫자놀이 79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 www.acmicpc.net 2. 풀이 단순 구현 문제이다. # 입력 m,n = map(int,input().split()) # 숫자와 문자열 num_name = ["zero","one","two","three","four","five","six","seven","eight","nine"] # 정수 리스트 int_list = [list(str(idx)) f..

알고리즘

2870-백준-수학숙제

1. 문제 출처 https://www.acmicpc.net/problem/2870 2870번: 수학숙제 종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차 www.acmicpc.net 2. 풀이 단순 문자열을 사용한 문제이다. # 입력 n = int(input()) lines = [] for _ in range(n): lines.append(input()) # 변수 선언 및 초기화 num = "" nums = [] # 각 문장별 숫자 추출 for line in lines: for char in line: # 만약 숫자라면 if char.isdigit(): num+=ch..

알고리즘/브루트 포스

2992-백준-크면서 작은 수

1. 문제 출처 https://www.acmicpc.net/problem/2992 2992번: 크면서 작은 수 정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 www.acmicpc.net 2. 풀이 전부 구해준 후 조건에 맞는 수를 찾는 방법을 사용하였다. # 입력 x = list(input()) nums = [] int_x = int("".join(x)) # 재귀를 통해 모든 경우의 수를 구한다. def solution(x,num): global nums if x == []: nums.append(int(num)) return for idx in..

알고리즘/그리드 알고리즘

10162-백준-전자레인지

1. 문제 출처 https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net 2. 풀이 단순 그리디 알고리즘 문제이다. # 입력 t = int(input()) btn = [300,60,10] push = [] # 가장 큰값부터 나눈다. for time in btn: push_count = t//time t -= time*push_count push.append(push_count) # 정확히 나누어 떨어지지 않으면 -1 출력 if t !=0: pr..

알고리즘

5555-백준-반지

1. 문제 출처 https://www.acmicpc.net/problem/5555 5555번: 반지 당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을 www.acmicpc.net 2. 풀이 # 입력 ring_str = input() n = int(input()) rings =[] for _ in range(n): rings.append(input()) count = 0 # 똑같은 문자열 2개을 이어 붙이고 해당 문자열에 원하는 문자열이 있으면 # count+=1을 헤준다. for ring in rings: if (ring*2).find(ring_str) != -1: ..

알고리즘

9324-백준-진짜 메세지

1. 문제 출처 https://www.acmicpc.net/problem/9324 9324번: 진짜 메시지 스파이들은 사령부와 통신하기 위해서 SMTP(비밀 메시지 전송 프로토콜)를 사용해 비밀 회선으로 전자 메시지를 보낸다. 메시지가 적들에 의해 조작되어 보내진 것이 아닌 진짜 메시지라는 것 www.acmicpc.net 2. 풀이 단순 구현 문제이다. # 테스트 케이스 받기 num = int(input()) # 각 메세지 판단 함수 def solution(msg): # 메세지 문자 딕셔너리 msg_char_list = {} # 3번 째 나온 단어 is_third = 0 # 성공 여부 flag = True for char in msg: # 만약 is_third 가 0이 아니면 if is_third: # ..

easysheep
나의 개발자 일기