1단계 11654번 아스키 코드
character = input()
print(ord(character))
ord 함수에 문자를 넣으면 해당 문자의 아스키 코드값을 반환한다.
2단계 10809번 숫자의 합
N = int(input())
num = input()
sum = 0
for i in num:
sum += int(i)
print(sum)
3단계 10809번 알파벳 찾기
S = input()
resultList = [ -1 for _ in range(26)]
count = 0
for i in S:
alphabet = ord(i) - 97
if resultList[alphabet] != -1:
count += 1
continue
resultList[alphabet] = count
count += 1
for j in resultList:
print(j, end=' ')
알파벳 소문자의 개수(26개)만큼 -1로 채워진 resultList를 만들었다.
count는 알파벳이 몇 번째인지 등장 순서를 나타낸다.
for문으로 입력받은 S를 조회하면 i는 첫 번째 글자부터 하나하나 참조하게 된다.
a의 아스키코드값은 97이다.
ord(a) - 97 = 0 이기 때문에 resultList[0]은 a의 자리, resultList[1]은 b의 자리, ... resultList[25]는 z의 자리를 나타낸다.
resultList[alphabet]의 값이 -1이 아니면 이미 그 자리의 알파벳은 나왔던 문자이기 때문에 count만 하나 올려주고 continue하여 바로 for문의 다음 차례를 실행하도록 했다.
4단계 2675번 문자열 반복
T = int(input())
for i in range(T):
num, char = input().split()
P = ''
for j in char:
P += j * int(num)
print(P)
테스트 케이스 T 만큼 for문을 반복한다.
num에는 반복할 횟수를 받고, char은 문자를 받는다.
결과에 나타낼 P는 공백으로 선언해두고, j가 char의 한 글자씩 참조할 때 입력받은 num만큼 곱해서 P에 추가해준다.
5단계 1157번 단어 공부
word = input().upper()
alphabetList = [ 0 for _ in range(26) ]
for i in word:
alphabetList[ord(i)-65] += 1
maxNumber = max(alphabetList)
if alphabetList.count(maxNumber) > 1:
print('?')
else:
for i in range(26):
if alphabetList[i] == maxNumber:
print(chr(i+65))
입력한 단어가 다 대문자가 되게 해주었다.
입력한 단어의 각 자리 알파벳은 순서에 따라 리스트에 카운트 해줬다.
이 리스트에서 제일 큰 수를 구하고 이 수가 리스트에 1개보다 많으면 '?'를 출력한다.
그렇지 않으면(제일 큰 수가 1개 있을 때) 이 큰 수가 몇 번째 방에 있는지 찾아 그 방에 해당하는 알파벳을 출력한다.
6단계 1152번 단어의 개수
word = list(map(str, input().split()))
print(len(word))
7단계 2908번 상수
A, B = input().split()
A = list(A)
A.reverse()
B = list(B)
B.reverse()
strA=''
strB=''
for i in range(3):
strA += A[i]
strB += B[i]
if int(strA) > int(strB):
print(strA)
else:
print(strB)
입력 받은 두 수를 반대로 뒤집어주고 두 수를 비교했다.
제출하고 다른 사람들의 코드를 봤는데 join 함수를 써서 푼 코드들이 많아서 나도 join을 사용해서 한 번 더 풀어보았다.
A, B = input().split()
A = list(A)
B = list(B)
A.reverse()
B.reverse()
if int(''.join(A)) > int(''.join(B)):
print(''.join(A))
else:
print(''.join(B))
join()은 매개변수로 들어온 리스트의 요소들을 합쳐주는데,
''.join(A) 처럼 쓰였을 땐 앞에 '구분자'를 사용해서 합쳐준다.
8단계 5622번 다이얼
def returnSec(char):
charNum = ord(char)
if 65<=charNum<=67:
return 3
elif 68<=charNum<=70:
return 4
elif 71<=charNum<=73:
return 5
elif 74<=charNum<=76:
return 6
elif 77<=charNum<=79:
return 7
elif 80<=charNum<=83:
return 8
elif 84<=charNum<=86:
return 9
elif 87<=charNum<=90:
return 10
word = input()
resultSec = 0
for i in word:
resultSec += returnSec(i)
print(resultSec)
9단계 2941번 크로아티아 알파벳
croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()
for i in croatia:
word = word.replace(i, 'a')
print(len(word))
replace함수를 사용해 크로아티아 알파벳이 있으면 a로 치환을 해주고 총 단어의 길이를 출력한다.
10단계 1316번 그룹 단어 체커
n = int(input())
count = n
for _ in range(n):
word = input()
for i in range(len(word)-1):
if word[i] != word[i+1]:
if word[i] in word[i+1:]:
count -= 1
break
print(count)
기준이 되는 글자 i가 다음 글자와 같지 않을 경우,
다음 글자 뒤로 i와 같은 글자가 있는지 비교하고 있을 경우 입력한 총 단어의 개수에서 빼주고 다음 단어 입력을 받도록 break 해준다.
'Algorithm > 백준 단계별로 풀어보기' 카테고리의 다른 글
[백준 알고리즘 / Python] 기본 수학_1 - 2292번 벌집 (0) | 2021.09.20 |
---|---|
[백준 알고리즘 / Python] 기본 수학_1 - 1712번 손익분기점 (0) | 2021.09.16 |
[백준 알고리즘/Python] 함수 (0) | 2021.09.07 |
[백준 알고리즘/Python]1차원 배열 (0) | 2021.09.03 |
[백준 알고리즘/Python] while문 (0) | 2021.05.26 |