import sys

dic=dict()
cnt=0

while True:
    word = sys.stdin.readline().rstrip()
    if word == '':
        break
    cnt+=1
    if word in dic:
        dic[word]+=1
    else:
        dic[word]=1

tree=sorted(dic.items())

for key, value in tree:
    percent=round((value/cnt)*100,4)
    print(key, '%.4f' %percent)

<코드설명>

먼저 while문을 통해 word를 입력받아주었다. word에 아무 입력도 없을 때 break를 하도록 해주었다.word가 dic에 있다면 dic[word]에 1을 추가시켜주었고, 그렇지 않다면 dic[word]를 1로 지정해주었다.그리고 백분율을 구해야하기 때문에 while문을 돌 때마다 cnt값을 증가시켜주었다.사전 순으로 정렬해야 하므로 dic의 items를 sort해주고 이를 tree에 저장해주었다.백분율을 구하기 위해 value값을 cnt로 나누었고, 이를 100 곱해주었다. 그리고 올림자리 수를 4로 지정하였다.그리고 소수점 4번째자리까지 출력해야하므로 출력형식을 %.4f로 지정하여 출력해주었다.

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 22233 가희와 키워드  (0) 2022.09.24
[BOJ] 1475 방 번호  (0) 2022.09.18
[BOJ] 20291 파일 정리  (0) 2022.09.17
[BOJ] 1302 베스트셀러  (0) 2022.09.11
[BOJ] 7785 회사에 있는 사람  (0) 2022.09.11

n=int(input())
dic=dict()
for i in range(n):
    exp = input().split('.')[1]

    if exp in dic:
        dic[exp]+=1
    else:
        dic[exp]=1

file=sorted(dic.items())

for key, value in file:
    print(key, value)

<코드설명>

먼저, 확장자 파일의 개수를 n으로 input받았다. 

n만큼 for문을 돌려 확장자인 exp의 input을 받아 주었다. 그리고 그와 동시에 '.'으로 split을 하여 index가 1번째인 문자를 exp에 저장해주었다.

exp가 dic에 이미 있다면, dic[exp]를 1 증가시켜주고, 그렇지 않다면 dic[exp]=1이라고 지정해주었다.

사전순으로 정렬하기 위해 sorted(dic.items())를 해주었고, 이를 file에 저장해주었다.

file 속 key와 value를 출력해주었다.

 

 

<실행결과>

 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 1475 방 번호  (0) 2022.09.18
[BOJ] 4358 생태학  (0) 2022.09.18
[BOJ] 1302 베스트셀러  (0) 2022.09.11
[BOJ] 7785 회사에 있는 사람  (0) 2022.09.11
[BOJ] 10815 숫자 카드  (0) 2022.09.10

n=int(input())
dic={}

for i in range(n):
    book=input()
    if book not in dic:
        dic[book]=1
    else:
        dic[book]+=1
    
list=[]
M=max(dic.values())
for i in dic:
    if M==dic[i]:
        list.append(i)
list.sort()
print(list[0])

<코드설명>

하루 팔린 책의 개수인 n을 입력받고 for문으로 n개의 book을 입력받았다.

book이 dic에 없다면, dic[book]에 1을 저장해준다. 그렇지 않으면 dic[book]값을 1씩 늘려준다.

M에 dic 값 중 가장 큰 값을 저장해준다. 

dic의 값 중에 최대값인 M과 동일하다면 list에 그 key값을 저장해주었다. key 값이 여러개이면 사전 순으로 가장 앞서는 제목을 출력해야 한다. 따라서 list를 sort해주었다.

가장 앞선 제목인 list[0]의 값을 출력해주었다.

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 4358 생태학  (0) 2022.09.18
[BOJ] 20291 파일 정리  (0) 2022.09.17
[BOJ] 7785 회사에 있는 사람  (0) 2022.09.11
[BOJ] 10815 숫자 카드  (0) 2022.09.10
[BOJ] 1235 학생 번호  (0) 2022.07.03

import sys
input = sys.stdin.readline
n=int(input())
dic=dict()
for i in range(n):
    name, el=map(str, input().split())
    if el=="enter":
        dic[name]=1
    else:
        del dic[name]
    
dic=sorted(dic.keys(), reverse=True)
for i in dic:
    print(i)

<코드 설명>

입력받을 출입 기록 수를 n에 입력받았고, dic에 dict()를 지정해주었다.

n만큼 입력받기 위해 for문을 이용해주었고, 이름(name)과 출입기록(el)을 입력받았다.

el이 enter이면 dic의 name을 1로 저장해주고, el이 leave이면 dic의 name을 삭제해주었다.

회사에 있는 사람의 이름을 사전 순의 역순으로 출력해야 하므로 sorted(dic.keys(), reverse=True)를 작성해주었다.

dic에 남은 값들을 하나씩 출력해주도록 하였다.

 

<실행결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 20291 파일 정리  (0) 2022.09.17
[BOJ] 1302 베스트셀러  (0) 2022.09.11
[BOJ] 10815 숫자 카드  (0) 2022.09.10
[BOJ] 1235 학생 번호  (0) 2022.07.03
[BOJ] 1316 그룹 단어 체커  (0) 2022.06.26

+ Recent posts