728x90
1. 로또의 최고 순위와 최저 순위 (추후 Refactor)
https://school.programmers.co.kr/learn/courses/30/lessons/77484
def solution(lottos, win_nums):
ans = []
wins = 0
for i in range(len(win_nums)):
if lottos[i] in win_nums:
win_nums.remove(lottos[i])
wins += 1
cnt = lottos.count(0)
lessWin = wins
if cnt <= len(win_nums):
wins += cnt
else:
wins += len(win_nums)
cal(wins, ans)
cal(lessWin, ans)
return ans
def cal(wins, ans):
rank = {1: 6, 2: 5, 3: 4, 4: 3, 5: 2, 6: (1, 0)}
for k, v in rank.items():
if isinstance(v, tuple):
if wins in v:
ans.append(k)
else:
if wins == v:
ans.append(k)
위 문제는 추후 다시 풀어볼 예정. rank를 훨씬 깔끔하게 처리할 수 있는 방법이 많았는데 아쉽다.... 너무 별로다
2. 다트 게임
https://school.programmers.co.kr/learn/courses/30/lessons/17682
import re
def solution(dartResult):
darts = re.findall("([0-9]+)([SDT])([*#]?)", dartResult)
score = [0] * len(darts)
for i in range(len(darts)):
word = list(darts[i])
if word[1] == 'D':
score[i] = int(word[0]) ** 2
elif word[1] == 'T':
score[i] = int(word[0]) ** 3
else:
score[i] = int(word[0])
if word[2] == '*':
score[i] *= 2
if i != 0:
score[i-1] *= 2
elif word[2] == "#":
score[i] *= -1
return sum(score)
3. 옹알이 (2)
https://school.programmers.co.kr/learn/courses/30/lessons/133499
아래는 시도했던 풀이이다. (완전 틀린 풀이)
def solution(babbling):
ans = 0
possible = ["aya", "ye", "woo", "ma"]
i = 0
recent = ""
for word in babbling:
while 1:
# 같은 옹알이
if recent == possible[i % len(possible)]:
break
else:
word = word.replace(possible[i % len(possible)], "", 1)
recent = possible[i % len(possible)]
if word in possible:
i += 1
continue
else:
break
# for baby in possible:
# # TODO: 4번보다 더 될 수 있는 경우 검출하기 - 같은 발음이 연속되지만 않으면 됨 ex. ayayewooyema
# word = word.replace(baby, "", 1)
if len(word) == 0:
ans += 1
return ans
접근 자체를 replace로 가다보니 문제가 많았다. 주어진 문장에 없는 옹알이도 그냥 replace 해버리니까 플래그를 세울수가 없었다. 옹알이를 딱 4번만 반복한다면 그냥 for문을 돌리면 되지만, 옹알이가 4번이 넘는 경우 (ex. "ayayewooyema")를 처리할 수가 없었다. 그래서 이것저것 시도해보다가 결국 포기했다.
def solution(babbling):
ans = 0
possible = ["aya", "ye", "woo", "ma"]
for word in babbling:
comp = ""
temp = ""
for char in word:
comp += char
if comp == temp:
break
if comp in possible:
temp = comp
comp = ""
if comp == "":
ans += 1
return ans
위와 같이 다른 분의 풀이를 참조하여 완성하였다. 쉬운 문제일 줄 알았는데 풀지 못해서 아쉽다
'Algorithm' 카테고리의 다른 글
[1일 3알고리즘] Day7 (0) | 2024.04.21 |
---|---|
[1일 3알고리즘] Day5 (0) | 2024.04.17 |
[1일 3알고리즘] Day4 (0) | 2024.04.16 |
[1일 3알고리즘] Day3 (0) | 2024.04.15 |
[1일 3알고리즘] Day2 (0) | 2024.04.12 |
댓글