쉬운 문제는 쉬웠고
몇몇 문제는 조금 생각해야하는 문제들로 이루어진 단계!
7-1) 백준 11654번: 아스키 코드
a = input()
print (ord(a))
문자열을 아스키코드로 반환: ord()
아스키코드를 문자열로 반환: chr()
7-2) 백준 11720번: 숫자의 합
a = input()
b = list(map(int, input())) //수 하나하나를 리스트에 저장
print(sum(b)) //리스트 속에 있는 수들 합
7-3) 백준 10809번: 알파벳 찾기
a = input()
result = list(range(97,123))
for i in result:
print(a.find(chr(i)), end = ' ')
chr함수를 사용해서 아스키코드를 문자열로 반환하고,
find함수를 사용해서 해당 문자 위치를 찾아 출력
+ 언젠간 쓸 것 같은 아스키코드표
7-4) 백준 2675번: 문자열 반복
a = int(input()) //케이스의 개수 입력받기
for i in range(a):
b,c = map(str, input().split())
k =int(b) //반복횟수 int형으로
for j in range(len(c)): //문자 c의 길이만큼 반복하며
print(c[j] * k, end ='') //해당 위치의 문자를 k만큼 곱한 뒤, 출력
print()
7-5) 백준 1157번: 단어 공부
a = input().upper()
a_list = list(set(a))
cnt = []
for i in a_list:
count = a.count(i)
cnt.append(count)
if cnt.count(max(cnt)) >= 2:
print("?")
else:
print(a_list[cnt.index(max(cnt))])
1. 입력 받은 문자열을 모두 대문자로 변경시키기
2. set함수를 사용하여 중복을 제거하고, list로 묶기
3. for문을 돌면서 a_list에 들어있는 문자의 갯수 count함수로 세고 cnt리스트에 저장
4. cnt리스트의 max값이 2개 이상이면 '?'출력
5. 아니라면 max값에 해당되는 인덱스의 문자 출력
사실 set함수는 안쓰고 하다가 안풀려서 좀 찾아보니까 다 set함수를 쓴 것 같았음.
솔직히 왜 써야하나 이해가 잘 안됐는데 안쓰면 시간초과 날듯
7-6) 백준 1152번: 단어의 갯수
a = input()
b = a.split()
print(len(b))
7-7) 백준 2908번: 상수
a,b = input().split()
a_reverse = a[::-1]
b_reverse = b[::-1]
if a_reverse > b_reverse:
print(a_reverse)
else:
print(b_reverse)
문자열을 [::-1]이라는 인덱스로 호출하면, 해당 문자열을 뒤집은 결과 반환
그렇게 새로 읽은 문자를 기반으로 수 비교한 뒤 큰 수를 출력하는 조건문을 써준다.
7-8) 백준 5622번: 다이얼
a = input()
cnt = []
for i in a:
if i in ['A', 'B', 'C']:
cnt.append(3)
elif i in ['D','E', 'F']:
cnt.append(4)
elif i in ['G', 'H', 'I']:
cnt.append(5)
elif i in ['J', 'K', 'L']:
cnt.append(6)
elif i in ['M', 'N', 'O']:
cnt.append(7)
elif i in ['P', 'Q', 'R', 'S']:
cnt.append(8)
elif i in ['T', 'U', 'V']:
cnt.append(9)
elif i in ['W', 'X', 'Y', 'Z']:
cnt.append(10)
else:
cnt.append(11)
print(sum(cnt))
다이얼에 해당되는 수 +1에 해당하는 값을 더하면 됨!
7-9) 백준 2941번: 크로아티아 알파벳
a = input()
alpha = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
for i in alpha:
a = a.replace(i, '.')
print(len(a))
단어를 입력받고, alpha만큼의 반복문을 돌며
입력받은 단어 중에서 alpha에 해당하는 문자가 있다면,
그 문자를 '.'으로 바꾸어준 뒤, a에 새로 저장한다
그 후, a의 길이를 출력한다
7-10) 백준 1316번: 그룹 단어 체커
a = int(input())
cnt = 0
for i in range(a):
word = input()
arr = []
groupword = True
for j in range(len(word)):
if word[j] in arr:
if word[j-1] != word[j]:
groupword = False
break
else:
arr.append(word[j])
if groupword:
cnt += 1
print(cnt)
groupword = true로 설정해서, true라면 count +1을 해주는 것이 포인트!
또, 입력 받은 각각의 단어 길이만큼 반복문을 돌면서
해당 위치의 문자가 배열 안에 있는지 비교를 한다.
만약 있다면, 그 앞에 넣었던 문자와 비교를 한다. 틀리다면 그룹단어이므로 반복문을 탈출하고
총 그룹단어의 갯수를 의미하는 cnt에 +1을 해준다.
만약 없다면, 배열 arr에 그 문자를 추가해주고 다음 문자를 확인한다
그 후, 총 cnt를 출력해주면 끝
'ⓒⓞⓓⓘⓝⓖⓣⓔⓢⓣ > ⓟⓨⓣⓗⓞⓝ' 카테고리의 다른 글
[python] 단계별로 풀어보기 - 9단계(7~11) (0) | 2021.05.01 |
---|---|
[python] 단계별로 풀어보기 - 9단계(1~6) (0) | 2021.05.01 |
[python] 단계별로 풀어보기 - 6단계 (0) | 2021.04.26 |
[python] 단계별로 풀어보기 - 5단계 (0) | 2021.04.26 |
[python] 단계별로 풀어보기 - 4단계 (0) | 2021.04.26 |
댓글