[Algorithm] 백준 문풀 20200929


백준 단계별로 풀어보기 중 문자열 파트 입니다. 알게된 점이 있는 문제만 정리했습니다.

전체 문제풀이는 여기에 올려놨습니다.

11654 아스키코드

알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.

string = input()
print(ord(string))
0
48

알게된 점

ord : python의 내장 함수로 str type의 변수를 인자값으로 받아 아스키 코드를 출력하는 함수

10809 알파벳 찾기

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

string = input()
print(*map(string.find,map(chr, range(97,123))))
baekjoon
1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

알게된 점

  1. chr : python 내장 함수로 int type 변수를 input으로 받는다. input 변수는 아스키 코드를 의미하는 것으로 해당 아스키 코드에 상응하는 문자를 출력한다.

  2. find : python 문자열 관련 메소드로 str type 변수를 받는다. 해당 문자열에서 input 변수값의 위치를 출력한다. 만약 문자열에서 input 변수값이 존재하지 않으면 -1을 출력한다.

  3. * (Asterisk) : * 는 python에서 여러 용도로 쓰이지만 여기서는 컨테이너 타입의 데이터를 unpacking 할 때 사용한다.

1157 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다

word = input().upper()
word_list = list(set(word))
word_count = []
for i in word_list:
    word_count.append(word.count(i))
    
if word_count.count(max(word_count)) >= 2:
    print("?")
else:
    print(word_list[word_count.index(max(word_count))])
z
Z

알게된 점

count : count는 liststr 둘 다 적용 가능한 메소드이다. str 값을 인수로 받아 해당 인수가 몇 개 포함되어 있는지를 출력해준다.

2908 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.

상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.

두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.

#풀이 1
num1, num2 = input().split()
num1, num2 = int("".join(list(reversed(num1)))), int("".join(list(reversed(num2))))
if num1 > num2:
    print(num1)
else:
    print(num2)
#풀이 2
num1, num2 = input().split()
num1, num2 = int(num1[::-1]), int(num2[::-1])
if num1 > num2:
    print(num1)
else:
    print(num2)
734 893
437

알게된 점

reversed : python의 내장 함수로 list, tuple, str type을 인수로 받아 reversed 객체로 반환한다.
set, dict에 대해서는 지원하지 않는다.