Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 캐치카페
- 우분투
- 코로나19
- Git
- 파이썬
- AI 경진대회
- Real or Not? NLP with Disaster Tweets
- leetcode
- 금융문자분석경진대회
- Baekjoon
- github
- PYTHON
- Kaggle
- 프로그래머스
- 데이콘
- 맥북
- 백준
- 편스토랑
- 편스토랑 우승상품
- hackerrank
- 더현대서울 맛집
- SW Expert Academy
- dacon
- programmers
- gs25
- Docker
- 자연어처리
- ubuntu
- 프로그래머스 파이썬
- ChatGPT
Archives
- Today
- Total
솜씨좋은장씨
[BaekJoon] 17269번 : 이름궁합 테스트 (Python) 본문
728x90
반응형
코딩 1일 1문제! 오늘의 문제는 백준의 이름궁합 테스트 입니다.
Solution
def get_compatibility_str(name1, name2, N, M):
compatibility_str = ""
temp = ""
if N <= M:
temp = name2[N:]
elif N > M:
temp = name1[M:]
for i in range(min(N, M)):
compatibility_str = compatibility_str + name1[i] + name2[i]
return compatibility_str + temp
def get_compatibility_score(compatibility_str, score_dict):
scores = [alphabet_score[char] for char in list(compatibility_str)]
for i in range(len(scores) - 2):
scores = [((scores[j] + scores[j+1]) % 10) for j in range(len(scores) - 1)]
compatibility_score = "".join(list(map(str, scores)))
return f"{int(compatibility_score)}%"
if __name__ == "__main__":
alphabet_score = {
"A":3, "B":2, "C":1, "D":2, "E":4, "F":3, "G":1, "H":3, "I":1, "J":1,
"K":3, "L":1, "M":3, "N":2, "O":1, "P":2, "Q":2, "R":2, "S":1, "T":2,
"U":1, "V":1, "W":1, "X":2, "Y":2, "Z":1
}
N, M = map(int, input().split())
name1, name2 = input().split()
compatibility_str = get_compatibility_str(name1, name2, N, M)
compatibility_score = get_compatibility_score(compatibility_str, alphabet_score)
print(compatibility_score)
Solution 풀이
먼저 이름 궁합 점수를 구하기 위해서는 이름을 한글자 씩 번갈아가면서 붙여 긴 문자열을 만들어주어야 합니다.
이를 get_compatibility_str 함수에서 수행합니다.
입력받은 문자열의 길이를 활용하여 짧은 문자열의 길이만큼 번갈아 가며 문자를 붙인 다음
긴문자열의 남은 문자열을 뒤에 붙여 return 합니다.
그리고 점수를 get_compatibility_score에서 구합니다.
좀 전에 만든 문자열과 각 문자마다의 점수가 담긴 dictionary를 넣은 다음
문자열 길이 -2 만큼 반복문을 돌면서 2개씩 계속 더한 값을 10으로 나눈 나머지를 계속 남겨둡니다.
맨 마지막에 2개만 남으면 이를 -> 문자 리스트 -> "".join()으로 문자열 만들기 -> int()로 정수만들기 return 합니다.
마지막으로 나온 값을 f-string으로 출력하면 끝!
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaekJoon] 2941번 : 크로아티아 알파벳 (Python) (0) | 2021.06.17 |
---|---|
[BaekJoon] 3059번 : 등장하지 않는 문자의 합 (Python) (0) | 2021.06.16 |
[BaekJoon] 11586번 : 지영 공주님의 마법 거울 (Python) (2) | 2021.06.14 |
[BaekJoon] 11721번 : 열 개씩 끊어 출력하기 (Python) (4) | 2021.06.13 |
[BaekJoon] 1357번 : 뒤집힌 덧셈 (Python) (0) | 2021.06.12 |
Comments