Programming/SWEA

[SWEA 6262].[파이썬 프로그래밍 기초(2) 파이썬의 기본 응용] 3. 자료구조 - 셋, 딕셔너리 10

토토모에요 2021. 7. 28. 13:09
728x90
반응형

SW Expert Academy에서 학습용으로 문제를 가져왔습니다. 문제가 될 시 수정, 삭제하겠습니다.

https://swexpertacademy.com/main/main.do

문제 : 다음의 결과와 같이 입력된 문자열의 문자 빈도수를 구하는 프로그램을 작성하십시오.

input

abcdefgabc

output

a,2
b,2
c,2
d,1
e,1
f,1
g,1

비효율적인 code

T=input()
a_count=0
b_count=0
c_count=0
d_count=0
e_count=0
f_count=0
g_count=0

for i in T:
    if i=="a":
        a_count+=1
    elif i=="b":
        b_count+=1
    elif i=="c":
        c_count+=1
    elif i=="d":
        d_count+=1
    elif i=="e":
        e_count+=1
    elif i=="f":
        f_count+=1
    elif i=="g":
        g_count+=1

print("a,%d"%a_count)
print("b,%d"%b_count)
print("c,%d"%c_count)
print("d,%d"%d_count)
print("e,%d"%e_count)
print("f,%d"%f_count)
print("g,%d"%g_count)

비효율적인 방법으로 pass가 되기는 하나 추천하지 않는 방법이다.

효율적인 code

T=input()
frequency = {}
for i in T:
    count = frequency.get(i,0)
    frequency[i] = count + 1

for j,k in frequency.items():
    print("%s,%d"%(j,k))

빈도 딕셔너리를 만들어 두고 get함수로 딕셔너리의 Key로 Value를 얻을 수 있는데 첫번째 for문을 통해 key에 대응하는 문자의 빈도값 즉 value값을 1씩 증가시킨다. 그 후 출력하면 된다.

반응형