[Python] 코딩 도장 - 사이냅소프트 면접문제
Updated:
코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.
코딩 도장에서 여러 문제를 확인할 수 있습니다.
난이도 순으로 차근차근 풀어보려 합니다.
[문제: 사이냅소프트 면접문제] - Lv.1
주어진 문자열(공백 없이 쉼표로 구분되어 있음)을 가지고 아래 문제에 대한 프로그램을 작성하세요.
이유덕,이재영,권종표,이재영,박민호,강상희,이재영,김지완,최승혁,이성연,박영서,박민호,전경헌,송정환,김재성,이유덕,전경헌
- 
    김씨와 이씨는 각각 몇 명 인가요? 
- 
    “이재영”이란 이름이 몇 번 반복되나요? 
- 
    중복을 제거한 이름을 출력하세요. 
- 
    중복을 제거한 이름을 오름차순으로 정렬하여 출력하세요. 
출처: https://codingdojang.com/scode/410?answer_mode=hide
[풀이]
# 1.김씨와 이씨는 각각 몇 명 인가요?
data = ["이유덕","이재영","권종표","이재영","박민호","강상희","이재영","김지완",
        "최승혁","이성연","박영서","박민호","전경헌","송정환","김재성","이유덕","전경헌"]
# "성" dictionary 생성
names = {str(name)[0]:0 for name in data}
# "성" count
for name in data:
    names[str(name)[0]] += 1
names
{'이': 6, '권': 1, '박': 3, '강': 1, '김': 2, '최': 1, '전': 2, '송': 1}
한 줄 for문으로 각 “성”과 초기값 0을 가지는 dictionary를 생성한다.
for문으로 전체 “성”별 갯수를 계산한다.
김씨는 2명, 이씨는 6명이다.
# 2. "이재영"이란 이름이 몇 번 반복되나요?
import pandas as pd
pd.Series(data).value_counts()
이재영    3
박민호    2
이유덕    2
전경헌    2
김지완    1
강상희    1
송정환    1
권종표    1
박영서    1
김재성    1
이성연    1
최승혁    1
dtype: int64
판다스 시리즈로 이름별 갯수를 계산하였다.
이재영은 3번 반복되었다.
# 3. 중복을 제거한 이름을 출력하세요.
unique_data = list(set(data))
unique_data
['전경헌',
 '김재성',
 '강상희',
 '박민호',
 '최승혁',
 '이성연',
 '박영서',
 '이유덕',
 '권종표',
 '송정환',
 '김지완',
 '이재영']
집합은 중복을 허용하지 않는 성질을 이용한다.
# 4. 중복을 제거한 이름을 오름차순으로 정렬하여 출력하세요.
unique_data.sort()
unique_data
['강상희',
 '권종표',
 '김재성',
 '김지완',
 '박민호',
 '박영서',
 '송정환',
 '이성연',
 '이유덕',
 '이재영',
 '전경헌',
 '최승혁']
sort를 이용해서 정렬한다.
집합은 sort가 불가능해서 3번에서 리스트로 설정하였다.
[추천 풀이]
names = "이유덕,이재영,권종표,이재영,박민호,강상희,이재영,김지완,최승혁,이성연,박영서,박민호,전경헌,송정환,김재성,이유덕,전경헌".split(",")
#1
a=[ i[0] for i in names ]
print("김씨 : %d\n이씨 : %d\n"%(a.count("김"), a.count("이")))
#2
print(names.count("이재영"))
#3
uniq_names = list(set(names))
print(uniq_names)
#4
uniq_names.sort()
print(uniq_names)
김씨 : 2
이씨 : 6
3
['전경헌', '김재성', '강상희', '박민호', '최승혁', '이성연', '박영서', '이유덕', '권종표', '송정환', '김지완', '이재영']
['강상희', '권종표', '김재성', '김지완', '박민호', '박영서', '송정환', '이성연', '이유덕', '이재영', '전경헌', '최승혁']
다른 분들이 풀이한 내용 중 추천 수가 많은 풀이이다.
우선 split으로 간단하게 원본 데이터를 만들었다.
1번 2번의 경우 리스트에 count를 써서 간편하게 만들었다.
3번 4번은 동일하다.
 
      
    
Leave a comment