코딩 테스트/Python

백준, Python) 10809, 2675, 2908, 5622, 11718

나무늘보섬 2025. 4. 9. 19:04

10809

alphaList = [-1] * 26  
s = input()

for i in range(len(s)):
    idx = ord(s[i]) - ord('a')
    if alphaList[idx] == -1:  
        alphaList[idx] = i  

for i in range(len(alphaList)):
    print(alphaList[i], end=" ")

의도

1. 입력받은 문자열의 크기 만큼 비교

2. index사용을 위해 문자를 아스키 코드표로 변환

3. 이후 위치 대입

 

다른 분들의 간단한 풀이 

word = input()
for i in 'abcdefghijklmnopqrstuvwxyz':
    print(word.find(i))

1. 아예 알파벳을 전부 입력

2. 알파벳 문자열의 길이(28번)만큼 for 문

-> word에서 찾아서 있으면 index값 print , 없으면 find함수 기능으로 자동 -1

 

 


  2675

 

내가 짠 코드

# 2675
t = int(input())
newword=""
for i in range(t):
    mul, word = input().split()
    for _ in range(len(word)):
        newword += int(mul)*word[_]
    print(newword)
    newword =""

 

-> 파이썬이 익숙하진 않으니 연습할 필요성을 느낌

 

 

다른 분이 짜신 코드

T = int(input())
for i in range(T):
    N, S = input().split()
    for j in S:
        print(j*int(N),end='')
    print()

 

 

 


 

2908

a,b = input().split()
a = int(a[::-1])
b = int(b[::-1])
if a>b:
    print(a)
else:
    print(b)

 

역순 [::-1]을 알아야 풀 수 있음.

 

 


5622

 

내가 짠 코드

button = {
    "A" : 2, "B" : 2, "C" : 2,
    "D": 3, "E": 3, "F": 3,
    "G" : 4, "H" : 4, "I" : 4,
    "J": 5, "K": 5,"L": 5,
    "M" : 6, "N" : 6, "O" : 6,
    "P" : 7, "Q" : 7, "R" : 7, "S" : 7,
    "T" : 8, "U" : 8, "V" : 8,
    "W" : 9,"X" : 9,"Y" : 9, "Z" : 9
}

word = input()
t = 0
for l in word:
    if l in button.keys():
        t += button.get(l) +1
print(t)

-> 직관적이긴 한데 번잡스러움 + 노가다성

 

 

word = input()
alp = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ']
time = 0

for i in range(len(word)):
    for k in range(8):
        if word[i] in alp[k]:
            time += k + 3

print(time)

 

문자열로 처리한 코드

 

 

딕셔너리로 좀 더 덜 노가다적으로 표현하면?

button = {
    "ABC": 2,
    "DEF": 3,
    "GHI": 4,
    "JKL": 5,
    "MNO": 6,
    "PQRS": 7,
    "TUV": 8,
    "WXYZ": 9
}
 
S = input()
 
time = 0
 
for ch in S:
    for key in button:
        if ch in key:
            time += button[key] + 1  
            break  
 
print(time)

입력받은 문자열의 문자를 딕셔너리에 있는 키들의 문자열과 비교해야 함.

그래서 ch라는 문자가 key에 들어있다면, ++

이후 해당 문자는 안쪽의 for문을 돌지 않아도 됨.

(S를 돌면서, ch는 button의 key들의 값들과 비교되야 하기 때문에 이중 for문)

 


11718

while True:
    try:
        word = input()
        print(word)
    except EOFError:
        break

 

try except로 EOFError 처리 해줘야함.