Python (현재중단핳핳)/백준 알고리즘 풀기

백준알고리즘풀기 #2) Class1 - 1000, 1001, 1008, 1152-단어의개수, 1157-단어공부

김듀공 2021. 2. 9. 00:06

 

안녕하세요. 듀공이에요

드디어 알고리즘 풀이를 시작합니다.

 

저는 실제로 파이썬을 다뤄본 적이 없어서 기초부터 시작하려고 합니다.

그래서 sloved.ac에 class 순서대로 풀어보려고 해요.

 

문제)1000 A+B
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
# 1차오답
#a = input()
#b = input()
#print(int(a) + int(b))

num1, num2 = input().split()
print(int(num1)+int(num2))

와 이거 진짜 쉬운 문제인데, 시작부터 오답 나왔습니다.

문제에 보면, 입력에 첫째 줄에 A와 B가 주어진다고 나와있는데.. 그걸 모르고 나눠서 받아서 틀렸어요

 

문제)1001 A-B
두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.
num1, num2 = input().split()
print(int(num1)-int(num2))

위에 풀어놓고 이거 틀리면 NOT HUMAN🥶

 

문제)1008 A/B
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
num1, num2 = input().split()
print(int(num1)/int(num2))

 

문제)1152 단어의 개수
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
str = input().split()
print(len(str))

생각보다 쉬웠습니다. 파이썬 함수 좋더라고요.

 

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

str = sorted(input().upper())
cnt = collections.Counter(str).most_common()

if len(str) == 1:
    result = cnt[0][0]
elif cnt[0][1] == cnt[1][1]:
    result = "?"
else:
    result = cnt[0][0]

print(result)

위 문제는 푸는데 좀 시간이 걸렸는데,

원래는 배열을 하나 만들고 알파벳과 출몰 횟수를 때려 넣고 정렬한 다음에 맨 앞에꺼를 뽑아내려고 했었는데.....

Collection 모듈을 찾아서 쉽게 해결했습니다. 하하

 

Collection모듈에서 Counter클래스를 사용했는데요.

most_common()을 사용하면 목록에 있는 키와 개수를 반환시켜 줍니다.

 

예시는 아래 코드 블록을 참고하시면 돼요. 

upper() 함수는 대문자 변환 함수입니다. (그럼 당연히 소문자는 lower()이겠죠?)

import collections

#input = Mississipi
str = sorted(input().upper())
#print(str) : ['I', 'I', 'I', 'I', 'M', 'P', 'S', 'S', 'S', 'S']

cnt = collections.Counter(str).most_common()
#print(cnt) : [('I', 4), ('S', 4), ('M', 1), ('P', 1)]

 

파이썬 공식문서는 여기 있습니다.

 

https://docs.python.org/3/library/collections.html#collections.Counter

 

collections — Container datatypes — Python 3.9.1 documentation

collections — Container datatypes Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple. namedtuple() factory f

docs.python.org

 

오늘은 이렇게 5개를 풀어봤습니다.

 

그럼 안녕😎

반응형