728x90
Overview
- 체감 난이도: ★☆☆☆☆
- 문제 레벨: Lv.1
- 문제 유형: 구현
- 풀이 상태: 답안참고 / 스스로 해결
- 추후: 다시 풀어보기 / 간단 복습 / 완벽 이해
[문제]
2024 kakao winter intership
https://school.programmers.co.kr/learn/courses/30/lessons/258712
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
선물을 주고 받은 기록으로 다음 달에 누가 선물을 많이 받을지 출력
1. A > B 또는 A < B 인 경우
A -> B : 5 / B -> A: 3 => A가 선물
2. A == B 또는 기록이 없는 경우
A가 친구들에게 3만큼 줌, 10만큼 받음 -> 선물 지수 -7
B가 친구들에게 2만큼 줌, 1만큼 받음 -> 선물 지수 1
>> B가 A에게 선물 받음
* 선물 지수도 같다면 둘다 선물을 안 받는다.
입력
friends > 친구들 이름
gifts > 선물 기록을 담은 1차원 문자열 배열
출력
다음 달 가장 선물을 많이 받는 친구가 받은 "선물의 수"
[코드]
구현 문제 / 조건들을 잘 정리해서 조건대로 구현한다.
def solution(friends, gifts):
# 준 사람, 받은 사람 저장 어떻게 할 건지?
arr = [[0 for _ in range(len(friends))] for _ in range(len(friends))]
for i in range(len(gifts)):
A, B = gifts[i].split()
x, y = friends.index(A), friends.index(B)
arr[x][y] += 1
# 선물 지수 계산 (gift_num)
friends_dic = {f: 0 for f in friends}
for i in range(len(arr)):
friends_dic[friends[i]] += sum(arr[i]) # 행 합산
friends_dic[friends[i]] -= sum(col[i] for col in arr) # 열 합산
# 다음 달 받을 선물 계산(friends_gift_num)
friends_gift_num = {f: 0 for f in friends}
for i in range(len(arr)):
for j in range(len(arr)):
if i == j: continue # 자기자신 제외
# 1. 선물 교류가 있는 경우 > 선물 개수 비교
elif i != j and (arr[i][j] != 0 or arr[j][i] != 0):
if arr[i][j] > arr[j][i]:
friends_gift_num[friends[i]] += 1
elif arr[i][j] < arr[j][i]:
friends_gift_num[friends[j]] += 1
# 1-1. 차이가 없으면 선물 지수 비교
elif arr[i][j] == arr[j][i]:
if friends_dic[friends[i]] > friends_dic[friends[j]]:
friends_gift_num[friends[i]] += 1
elif friends_dic[friends[i]] < friends_dic[friends[j]]:
friends_gift_num[friends[j]] += 1
# 2. 선물 교류가 없는 경우 > 선물 지수 비교
else:
if friends_dic[friends[i]] > friends_dic[friends[j]]:
friends_gift_num[friends[i]] += 1
elif friends_dic[friends[i]] < friends_dic[friends[j]]:
friends_gift_num[friends[j]] += 1
# 선물 많이 받은 사람 추출
res = []
for k,v in friends_gift_num.items():
res.append(v//2)
answer = max(res)
return answer
반응형
'🚩 Coding Test > Programmers' 카테고리의 다른 글
[Programmers][Python] Lv.2 가장 큰 수 (1) | 2024.10.12 |
---|---|
[Programmers][Python] Lv.2 베스트앨범 (1) | 2024.10.11 |
[Programmers][Python] Lv.1 추억 점수 (0) | 2024.08.07 |
[Programmers][Python] Lv.1 명예의 전당(1) (0) | 2024.08.06 |
[Programmers][Python] Lv.1 모의고사 (0) | 2024.08.06 |