본문 바로가기

코딩 테스트/백준 파이썬 문제 풀이

(62)
[백준 1316번 파이썬] 그룹 단어 체커 이번 문제는 쉽게 표현해서 입력받은 개수만큼의 문자열 중에서 반복되는 문자가 없거나, 혹은 있지만 떨어져 있지 않고 붙어 있는 문자열일 경우에만 '그룹 단어'라고 부르는데 이 그룹 단어의 개수를 출력하면 되는 것이다 num = int(input()) count = 0 for _ in range(num): word = input() error = 0 for i in range(len(word)-1): if word[i] != word[i+1]: new_word = word[i+1:] if new_word.count(word[i]) > 0: error += 1 if error == 0: count += 1 print(count) 정답 코드가 조금 복잡해 보이지만 word에 i 번째 문자와 i+1 번째 문자를..
[백준 2941번 파이썬] 크로아티아 알파벳 이번 문제는 입력받은 문자열을 사용자가 가지고 있는 변경 '표'에 의해 크로아티아 알파벳으로 변경했을 때 크로아티아 알파벳 상에서 몇 개의 문자로 구성된 문자열이었는지를 출력하기만 하면 된다 alpha = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] word = input() for i in alpha: word = word.replace(i, 'a') print(len(word)) 이전 문제처럼 문제 속에 주어진 문자열을 미리 리스트 형태로 저장하고 진행해야 한다 그리고 리스트 속에 있는 문자가 문자열에 있을 때마다 해당 문자를 replace 함수를 이용해 a로 변경해준다 그렇게 되면 크로아티아 알파벳이 존재할 때마다 a로 변경해주는 셈이기 때문에 마지막에는..
[백준 5622번 파이썬] 다이얼 다이얼 속에 있는 문자를 출력할 때 소요되는 시간을 출력하면 되는 문제이다 여기에서 다이얼 속에 있는 문자는 속해 있는 숫자의 +1 만큼의 초 시간이 소요된다 dial = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'] word = input() time = 0 for unit in dial: for i in unit: for k in word: if i == k: time += dial.index(unit) + 3 print(time) 다이얼 속 문자 같은 건 사진으로만 주어져 있기 때문에 실제로 코드 안에서 사용하려면 직접 리스트로 만들어 줘야 한다 1부터 9까지 위치에 (실제 위치는 0부터 계산하기 때문에 0~8이다) 해당하는 문자들을 차례대..
[백준 2908번 파이썬] 상수 이번 문제는 입력값으로 두 수가 들어오는데, 이 두 수를 각자 반대로 읽어 저장한 뒤 더 큰 수를 출력한다 즉, 376이 들어가면 673으로 저장하고, 912은 219로 저장한다. 들어왔을 때의 수와는 상관없이 리버스한 수로 최댓값을 구한다는 의미이다 A, B = input().split() A = int(A[::-1]) B = int(B[::-1]) if A > B: print(A) else: print(B) 문자열 옆에 붙는 [::-1]은 문자열 자체를 리버스해주는 내용으로 각각 자기 자신을 리버스한 뒤 if문으로 더 큰 값을 출력해주면 되는 간단한 코드이다
[백준 1152번 파이썬] 단어의 개수 이번 문제는 매우 간단하다 입력값으로 문자열이 들어오면 공백으로 구분된 단어가 몇 개인지만 출력해주면 되는 문제이다 print(len(input().split())) split() 함수를 사용해서 입력값들을 공백 기준으로 자르기만 해도 이를 len() 함수를 이용해 몇 개의 단어로 잘렸는지 쉽게 출력할 수 있다
[백준 1157번 파이썬] 단어 공부 이번 문제는 입력 받은 문자열 속에서 반복적으로 사용된 알파벳 중 가장 많이 사용된 문자를 대문자로 출력하면 된다 만약 한 문자열 안에서 가장 많이 사용된 문자가 여러개라면 ?를 출력해야 한다 word = input().upper() origin_word = list(set(word)) count_list = [] for i in origin_word: count = word.count(i) count_list.append(count) if count_list.count(max(count_list)) > 1: print('?') else: max_index = count_list.index(max(count_list)) print(origin_word[max_index]) 우선, upper 함수를 이용해..
[백준 2675번 파이썬] 문자열 반복 이번 문제는 케이스 횟수를 입력받고, 반복할 횟수와 반복할 문자열을 입력받으면 문자열의 각 문자를 반복 횟수 만큼 출력하도록 코드를 작성하면 되는 문제이다 chance = int(input()) for _ in range(chance): num, sentance = input().split() for k in sentance: print(k*int(num), end='') print() for 문에서 in 앞에 언더바(_)를 써주면 바뀌어야 하는 특정 변수가 없을 때 그저 range 안에 있는 범위 만큼만 for문 내용을 반복해준다 print 함수 안에서 end=''가 존재하는 이유는 해당 답의 출력값은 공백 없이 나타나야 되기 때문에 집어넣은 옵션이다
[백준 10809번 파이썬] 알파벳 찾기 이번 문제는 영어 문자열을 입력받고 출력할 때 해당 문자열에 없는 알파벳 위치에 -1을, 존재하는 알파벳에는 문자열에서의 n번째 순서임을 나타내면 되는 문제이다 참고로 문자열 순서를 세는 건 1이 아닌 0부터 시작한다 word = input() alphabet = list(range(97, 123)) for i in alphabet: print(word.find(chr(i))) 우선 한 변수에 97부터 123까지의 문자를 집어넣는다 위의 숫자는 a부터 z까지의 아스키코드이며 이는 또 for 문을 이용해 문제를 풀이할 수 있기 때문에 사용하는 방식이다 chr(변수)를 이용해 아스키코드를 다시 문자열로 바꿔주고, find를 이용해 입력받은 문자열의 순서를 코드가 알아서 출력할 수 있도록 한다 중요한 부분은 ..