61번 로또의 최고 순위와 최저 순위
> 번호를 맞출 때마다 rank에 -1을 해주는 방식으로 문제를 품, 케이스 1개만 틀렸는데.. 이유를 모르겠다..ㅠㅠ
def solution(lottos, win_nums):
answer = []
rank = 7
# 최저 순위 구하기
# 1) 해당 번호가 있다면 순위를 올려준다.
for i in lottos :
if i in win_nums :
rank -= 1
# 2) 단 아무 번호도 없다면 순위는 6
if rank == 7 :
answer.append(6)
else :
answer.append(rank)
# 최고 순위 구하기
# 3) 0의 숫자가 있다면 어떤 번호든 될 수 있기에 순위를 올려준다.
for j in lottos :
if j == 0 :
rank -= 1
# 4) 만약 0도 없을 수 있기 때문에 다음과 같이 코드 작성
if rank == 7 :
answer.append(6)
else :
answer.append(rank)
answer.sort()
return answer
> 깔끔한 답 👏👏 rank 리스트를 미리 만들어주고 맞춘 수를 인덱스로 표현
def solution(lottos, win_nums):
rank=[6,6,5,4,3,2,1]
cnt_0 = lottos.count(0)
ans = 0
for x in win_nums:
if x in lottos:
ans += 1
return rank[cnt_0 + ans],rank[ans]
> set 집합 함수와 교집합을 활용하여 답안 👏
def solution(lottos, win_nums):
rank = {
0: 6,
1: 6,
2: 5,
3: 4,
4: 3,
5: 2,
6: 1
}
return [rank[len(set(lottos) & set(win_nums)) + lottos.count(0)], rank[len(set(lottos) & set(win_nums))]]
# 교집합의 길이 + 0의 개수 = 최고 순위 / 교집합의 길이 : 최저 순위
62번 옹알이
def solution(babbling):
answer = 0
can = ['aya', 'ye', 'woo', 'ma']
for i in babbling:
for c in can:
if c*2 not in i :
i = i.replace(c,' ')
if i.isspace():
answer += 1
return answer
63번 숫자짝꿍
> 61번에서 배운 set 함수와 count(i)를 활용해서 풀어봤다.
def solution(X, Y):
answer = ''
a = []
same = set(X)&set(Y)
for i in same :
for j in range(min(X.count(i),Y.count(i))):
a.append(i)
if len(a) == 0 :
return '-1'
else:
a.sort(reverse = True)
answer = ''.join(a)
if a[0] == '0':
return '0'
return answer
> 우와..👏👏 9부터 0 순차적으로 확인함으로써 sort함수를 안쓰고 count()와 min()을 적절하게 활용
def solution(X, Y):
answer = ''
for i in range(9,-1,-1) :
answer += (str(i) * min(X.count(str(i)), Y.count(str(i))))
if answer == '' :
return '-1'
elif len(answer) == answer.count('0'):
return '0'
else :
return answer
'[스파르타코딩클럽]데이터분석 과정 > PYTHON' 카테고리의 다른 글
[Python 코드카타] 67~69번(프로그래머스) (2) | 2024.01.30 |
---|---|
[Python 코드카타] 64 ~ 66번 (프로그래머스) (0) | 2024.01.29 |
[Python]데이터 전처리&시각화 강의 과제(2)시각화 (0) | 2024.01.24 |
[Python] 데이터 전처리&시각화 강의 과제 (1) 전처리 (0) | 2024.01.24 |
[Python 코드카타] 58 ~ 60번 (프로그래머스) (1) | 2024.01.24 |