baekjoon 15

[백준] 1334 다음 팰린드롬 수

www.acmicpc.net/problem/1334 1334번: 다음 팰린드롬 수 팰린드롬 수는 앞으로 읽어도, 뒤로 읽어도 같은 숫자이다. 101, 4, 6666와 같은 숫자는 팰린드롬 수이고, 10, 564, 15452와 같은 숫자는 아니다. 어떤 수 N이 주어질 때, N보다 큰 팰린드롬 수 중에서 가 www.acmicpc.net s_num = input() len_num=len(s_num) s_num_half= s_num[:(len_num+1)//2] result= '' if s_num == '9'*len_num: print(int(s_num)+2) elif len_num == 1: print(int(s_num)+1) elif len_num%2: # odd tmp = s_num_half + s_nu..

STUDY/Algorithm 2021.02.05

[백준] 1259 팰린드롬수

www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net while True: tmp = input() if tmp == '0': break else: if tmp==tmp[::-1]: print('yes') else: print('no') 팰린드롬에 대한 문제는 이전에도 풀어봐서 쉽게 구현가능했다. 마지막에 0이 들어올때 반복문이 종료된다는 조건이 추가가 되었지만, 숫자도 문자열로 받을수있어서 큰 차이없는 문제였다.

STUDY/Algorithm 2021.02.05

[백준] 2960 에라토스테네스의 체

www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net n,k=map(int,input().split()) prime=[False,False]+[True]*(n-1) index,result = 0,0 for number, val in enumerate(prime): if val: for i in range(number,n+1,number): if prime[i]: prime[i]=False index+=1 if index==k: result = i break print(result) 에라토스테네스의 체를 사용할때 항상 앞에 false 두개를 넣고 시작한..

STUDY/Algorithm 2021.02.03

[백준] 2941 크로아티아 알파벳

www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net s =input() alpha2=['c=','c-','dz=','d-','lj','nj','s=','z='] result = 0 index = 0 while True: tmp = s.find(alpha2[index]) if tmp == -1: if index == 7: break index += 1 else: s = s.replace(alpha2[index],'_',1) r..

STUDY/Algorithm 2021.02.01

[백준] 10809 알파벳 찾기

www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net s=input() alpha = [-1]*(ord('z')-ord('a')+1)# 알파벳 갯수만큼 -1 for index, ch in enumerate(s):# 알파벳을 반복문으로 돌리는 것보다 if alpha[ord(ch)-97] == -1:# 더 짧을것같아서 string으로 반복문을 돌렸다. alpha[ord(ch)-97] = index# 각 알파벳이 처음나오는 index의 값만 바꿔준다. fo..

STUDY/Algorithm 2021.02.01

[백준] 1157 단어 공부

string = input().upper() # 대소문자 구분 안하는데 대문자로 출력하므로 대문자로 고정 alpha = dict() for ch in string:# 알파벳이 각각 몇 개 있는지 확인 if not ch in alpha: alpha[ch] = 0 alpha[ch] += 1 alpha = sorted(alpha.items(), key=lambda x:x[1]) # 딕셔너리의 값으로 정렬 max_ch,max_val = alpha.pop()# 마지막 값이 가장 큰값이므로 알파벳과 값 저장 if alpha==[]: print(max_ch) elif max_val == (alpha.pop())[1]: print("?") else: print(max_ch) 원래는 if alpha==[]:를 넣지 않았..

STUDY/Algorithm 2021.02.01

[백준] 8958 OX 퀴즈

www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net T = int(input()) for tc in range(T): tmp_list = input().split('X') result = 0 for tmp in tmp_list: if tmp != '': result += sum(range(len(tmp)+1)) print(result) 결과에서 O가 연속되면 점수가 누적되는 시스템이다. 결과에 X를 기준으로 split하면 각 원소가 O또는 공..

STUDY/Algorithm 2021.01.30