Python 9

[백준] 1157번 - 단어 공부 (PYTHON)

대소문자가 섞여있는 알파벳 문자열이 주어지고, 이 단어에서 가장 많이 사용된 알파벳을 알아내는 문제이다. 여기서 가장 많이 사용된 알파벳이 1개가 아닌 경우에는 ?를 출력한다. 풀이는 다음과 같다. str = input().upper() #대문자로 변경 ex) KIIJJJS tmp = list(set(str)) #중복 제거 ex) KIJS dics = [] for s in tmp: #인풋값별 문자반복 개수 구하기 ex) [1,2,3,1] cnt = str.count(s) dics.append(cnt) if dics.count(max(dics)) > 1: #최댓값 개수가 2개 이상이면 ? 출력 print('?') else: # ex) tmp[2] print(tmp[dics.index(max(dics))])..

[백준] 2675번 - 문자열 반복 (PYTHON)

먼저 추가로 입력받을 케이스의 수 n을 입력 받은 후, n개의 케이스를 각각 입력받아 계산값을 출력하는 문제이다. 각 케이스의 입력값은 "반복할횟수 반복할문자열" 의 모양으로 입력받는다.(두 값은 띄어쓰기로 구분) 풀이는 다음과 같다. t = input() cases = list() for i in range(int(t)): cases.append(input()) # 입력받은 케이스 수만큼 입력받은 값 리스트 담기 for lst in cases: # 각 케이스에서 반복횟수 / 반복할문자 분리 num = lst.split(' ')[0] str = lst.split(' ')[1] result = '' for item in list(str): result += item*int(num) # 각 문자열 반복횟수만..

[백준] 10809번 - 알파벳 찾기 (PYTHON)

소문자로만 이루어진 단어가 주어지면, a-z까지의 알파벳이 대해 주어진 단어에 포함되어있으면 해당 위치를, 없다면 -1을 출력하는 프로그램을 작성하는 문제이다. 먼저, 첫 번째 풀이이다. str = input() for i in range(97, 123): # 소문자 a-z까지 돌면서 체크 chk = -1 for index, s in enumerate(list(str)): # 입력받은 문자열에서 있는지 체크 if chr(i) == s: chk = index # 있으면 인덱스값 저장 break # 여러 번 있는 경우 첫번째 인덱스를 받아오기 위해 다음 알파벳으로 이동 print(chk, end=' ') 소문자로만 이루어진 문자열 str를 입력받아 a-z까지 돌면서 포함 여부와 인덱스를 추출하는 방식이다. ..

[백준] 11720번 - 숫자의 합 (PYTHON)

두 개의 숫자를 입력받아서 값을 계산하는 문제이다. 첫 번째로 숫자의 갯수를 입력받은 후, 두 번째로 공백없이 붙어있는 전체 숫자를 입력하면 이를 모두 다 더한 값을 출력하면 된다. 예를 들어 이런 식으로 출력되도록 만들면 된다. 풀이는 간단하다. 사실 두 번째 전체 숫자만 map함수를 이용하여 각 자릿수를 더하면 된다. n = input() all = input() print(sum(map(int, str(all))))

[백준] 11655번 - 아스키 코드 (PYTHON)

알파벳 소문자, 대문자, 숫자 0~9 중 하나가 주어지는 경우 그에 해당되는 아스키코드 값을 출력하는 프로그램이다. 이 문제는 아스키코드 변환 함수를 알고 있다면 바로 해결된다. 함수는 다음과 같다. 문자열 -> 아스키코드값: ord(입력값) 아스키코드값 -> 문자열: chr(입력값) 따라서, 위 함수를 이용하여 이렇게 풀어주면 된다. print(ord(str(input())))

[백준] 1065번 - 한수 (PYTHON)

한수라는 것은 어떤 양의 정수 x의 각 자리가 등차수열을 이룬다면, 그 수를 의미한다. 문제는 정수 n이 주어졌을 때 1~n 사이의 한수의 개수를 출력하는 것이다. 먼저 풀이는 다음과 같다. def han(n): result = 0 for i in range(1, n + 1): tmp = list(map(int, str(i))) # 정수 i를 자릿수별로 추출하여 리스트 담기 ex) [1,2,3] chk = diff = 0 if i < 100: # 1~99까지는 무조건 한수이므로 갯수+1 result += 1 else: # zip으로 리스트 안의 각 자릿수와 바로 다음자릿수 간의 차이 비교 for index, (a, b) in enumerate(zip(tmp, tmp[1:])): if index == 0:..

[백준] 4673번 - 셀프 넘버 (PYTHON)

이 문제는 조금 어려웠다. 일단 셀프넘버라는 걸 처음 들어봐서, 문제를 자세히 읽어야 했다. 10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램이다. 먼저, 첫 번째로 풀어본 방식은 다음과 같다. import math r_list = list(range(1, 10001)) # 1~10000까지의 숫자로 이루어진 리스트 생성 for i in range(1, 10001): lenght = len(str(i)) # 1~10000까지 각 숫자의 자릿수 추출 tmp = i for j in range(lenght): if j == 0: # 1의자리 수 더해주기 tmp = tmp + i else: tmp = tmp + math.trunc((i / pow(10, j))) # 10의자리 수 이상 더..

[python] N 이하의 자연수에서 소수 찾기

파이썬 연습을 위해 연습문제를 2개 풀어보았다. Q1. N 이하의 자연수에서 소수 찾는 함수 Q2. N 이하의 두 자연수의 합의 마지막자리가 4가 되는 수를 찾는 함수 먼저, 1번 문제는 'N 이하의 자연수에서 소수를 찾는 함수를 만들기' 이다. 이 문제는 3가지 방식으로 풀어보았는데 첫번째는 다음과 같다. def find(x): list = [i for i in range(2,x+1)] for j in range(2,x+1): for y in range(2,j): if j % y == 0: list.remove(j) break return list 처음 시도했던 방법인데, 처음에 list안에 숫자를 다 넣은 후 조건문을 걸어서 소수가 아닌 수는 리스트에서 제거되도록 했다. 아무래도 처음부터 리스트에 숫..

Python 2022.04.15