티스토리 뷰
2022년입니다! 새해 복 다들 듬뿍 받으세요 :)
7단계 정답 코드는 아래 제 깃허브에서도 확인하실 수 있습니다.
https://github.com/kmi0817/coding_test_practice/tree/main/baekjoon_step/step7
1. 아스키 코드 (11654번)
- ord() : 아스키 코드를 반환합니다.
your_input = input()
print(ord(your_input))
2. 숫자의 합 (11720번)
N = int(input())
if N < 1 or N > 100 :
exit()
numbers = input()
sum_result = 0
for n in numbers :
sum_result += int(n)
print(sum_result)
3. 알파벳 찾기 (10809번)
- find('문자') : 문자열에서 해당 문자의 인덱스 위치를 반환합니다. 해당 문자가 없을 경우 -1 반환합니다.
from string import ascii_lowercase
S = input()
alphabet_list = list(ascii_lowercase)
for alphabet in alphabet_list :
print(S.find(alphabet), end=" ")
4. 문자열 반복 (2675번)
- 파이썬에선 "문자열" * 숫자를 하면 문자열을 숫자만큼 반복해서 출력합니다.
이 기능 덕분에 정말 간단하게 코드를 완성했습니다 :) 파이썬 정말 좋아요 ㅎㅎ
T = int(input())
if T < 1 or T > 1000 :
print("1<= T <= 1,000")
exit()
for i in range(T) :
R, S = input().split()
R = int(R)
if R < 1 or R > 8 :
exit()
if len(S) < 1 or len(S) > 20 :
exit()
new_str = ""
for c in S :
new_str += c * R
print(new_str)
5. 단어 공부 (1157번)
- count('문자') : 리스트 내 해당 문자의 등장 회수를 반환합니다.
from string import ascii_uppercase
S = input().upper()
alphabets = list(ascii_uppercase)
frequent = ""
cnt = 0
for alphabet in alphabets :
temp_cnt = S.count(alphabet)
if cnt < temp_cnt :
cnt = temp_cnt
frequent = alphabet
elif cnt == temp_cnt :
frequent = "?"
print(frequent)
- 기존 152ms에서 96ms로 속도 개선 (2023-05-24)
s = input().upper()
alphas = set(s)
count = {ch: s.count(ch) for ch in alphas}
r_count = {s.count(ch): ch for ch in alphas}
biggest = max(count.values())
if list(count.values()).count(biggest) > 1:
print('?')
else:
print(r_count[biggest])
6. 단어의 개수 (1152번)
주석 처리된 코드는 처음에 작성한 코드인데, 틀렸다고 나옵니다. 수정한 코드와 처음에 작성한 코드 간 차이점은 입력한 문자열의 길이를 체크하는 것밖에 없습니다...ㅠ
입력에 있는 조건은 굳이 코드에서 체크할 필요가 없는 것인지 궁금하네요. 지금까지는 나름 체크를 다 하려고 노력했는데 말이죠.
- strip() : 문자열의 앞뒤 공백 문자를 제거합니다. "또한 문자열은 공백으로 시작하거나 끝날 수 있다"이라는 입력 내용 때문에 사용했습니다. 근데 사실 split() 사용해서 별로 필요 없을 것 같기도 하고.
S = input().strip().split()
print(len(S))
# S = input().strip()
# if len(S) > 1000000 or len(S) < 1 :
# exit()
# S_list = S.split()
# print(len(S_list))
7. 상수 (2908번)
은근 변수 명명이 어려워요...
- reversed(리스트) : 리스트의 원소 순서가 뒤바뀐 리스트를 반환합니다. (원본 리스트는 변화X)
- join() : 리스트를 문자열로 변환합니다.
def make_str_2_list(string) :
ret_list = list()
for c in string :
ret_list.append(c)
return ret_list
###
A, B = input().split()
reversed_A_list = reversed(make_str_2_list(A))
reversed_B_list = reversed(make_str_2_list(B))
reversed_A_str = "".join(reversed_A_list)
reversed_B_str = "".join(reversed_B_list)
reversed_A = int(reversed_A_str)
reversed_B = int(reversed_B_str)
print(max([reversed_A, reversed_B]))
8. 다이얼 (5622번)
alphabets 리스트 내 원소의 인덱스 + 1은 전화기의 숫자이고,
숫자 1은 2초, 2는 3초, 3은 4초... 이런 식으로 숫자 + 1만큼의 시간이 걸리기 때문에
index + 2가 바로 해당 숫자(인덱스+1)를 누르는 데 필요한 시간이 됩니다.
alphabets = ["", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"]
string = input()
minimum_time = 0
for char in string :
for index, chunk in enumerate(alphabets) :
if char in chunk :
minimum_time += (index + 2)
print(minimum_time)
9. 크로아티아 알파벳 (2941번)
문자열의 전체 길이에서, 크로아티아 특수 문자(?)의 개수를 뺏습니다!
croatia_alphabet = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
check_alphabet = ["c", "d", "l", "n", "s", "z"] # z, j 제외
###
S = input()
total_length = len(S)
special_cnt = 0
for i in range(len(S)) :
if S[i] in check_alphabet :
char_2 = S[i:i+2]
char_3 = S[i:i+3]
if char_3 == "dz=" :
special_cnt +=1
elif char_2 in croatia_alphabet :
special_cnt += 1
print(total_length - special_cnt)
10. 그룹 단어 체커 (1316번)
- 1번째 if문 - 이전 문자와 현재 문자가 다른데, 현재 문자가 이미 나온 적이 있는 문자라면 그룹 단어가 아닙니다. ex) aaabba
- 2번째 if문 - 이전 문자와 현재 문자가 다른데, 현재 문자가 그 동안 나온 적 없는 문자라면 아직 그룹 단어가 될 가능성이 있습니다.
import sys
N = int(input())
group_word_cnt = 0
for i in range(N) :
exit_chars = list()
former_char = ""
is_group_word = True
word = sys.stdin.readline().lower()
for char in word :
if char != former_char and char in exit_chars :
is_group_word = False
break
elif char != former_char and char not in exit_chars :
exit_chars.append(char)
former_char = char
if is_group_word :
group_word_cnt += 1
print(group_word_cnt)
백준 단계별로 풀어보기 6단계 정답 코드는 아래 링크를 클릭해주세요 :)
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
백준 단계별로 풀어보기 8단계 기본수학1 벌집 2292번 파이썬 정답 (0) | 2022.01.05 |
---|---|
백준 단계별로 풀어보기 8단계 기본수학1 손익분기점 1712번 파이썬 정답 (0) | 2022.01.05 |
백준 단계별로 풀어보기 6단계 함수 파이썬 정답 (0) | 2021.12.31 |
백준 단계별로 풀어보기 5단계 1차원 배열 파이썬 정답 (0) | 2021.12.31 |
백준 단계별로 풀어보기 4단계 while문 파이썬 정답 (0) | 2021.12.30 |