본문 바로가기
ⓒⓞⓓⓘⓝⓖⓣⓔⓢⓣ/ⓟⓨⓣⓗⓞⓝ

[python] 단계별로 풀어보기 - 7단계

by heaven00 2021. 4. 29.
728x90

 

 

 

 

쉬운 문제는 쉬웠고

몇몇 문제는 조금 생각해야하는 문제들로 이루어진 단계!

 

 

 


 

 

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를 출력해주면 끝

 

 

 

 

 

728x90

댓글