728x90

Coding test 17

[Programmers] 콜라 문제

문제 설명 문제 풀이 과정 첫 번째 풀이: 테스트 케이스 성공, 실제 제출 실패 def solution(a, b, n): answer = 0 while n >= a: val, div = divmod(n, a) answer += val n = (val*b) + div return answer 두 번째 풀이: answer에 * b 하는 걸 추가하는 걸 잊었다..! 성공! def solution(a, b, n): answer = 0 while n >= a: val, div = divmod(n, a) answer += (val*b) n = (val*b) + div return answer - coding test url: https://school.programmers.co.kr/learn/courses/30/..

Coding test 2022.12.12

[Programmers] 햄버거 만들기

문제 설명 문제 풀이 과정 ingredient의 원소를 하나씩 s에 담고, 뒤에서 4번째부터 만약에 [1, 2, 3, 1]과 동일하다면 answer += 1 하기 초반에 너무 복잡하게 생각했다. def solution(ingredient): answer = 0 s = [] for i in ingredient: s.append(i) if s[-4:] == [1, 2, 3, 1]: answer += 1 del s[-4:] return answer - coding test url: https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, ..

Coding test 2022.12.11

[Programmers] 푸드 파이트 대회

문제 설명 문제 풀이 과정 비교적 쉽게 푼 문제 index 1번부터 2로 나눈 몫만큼 answer에 string type으로 추가해주고, 0과 뒤집은 answer를 붙여준 방식 def solution(food): answer = '' for i in range(1, len(food)): cnt = food[i] // 2 answer += str(i) * cnt ans = answer[-1::-1] answer = answer + '0' + ans return answer 다른 사람 풀이 def solution(food): answer = '' for i,n in enumerate(food[1:]): answer += str(i+1) * (n//2) return answer + "0" + answer[::..

Coding test 2022.12.11

[Programmers] 과일 장수

문제 설명 문제 풀이 과정 첫번째 풀이 : 시간 초과 def solution(k, m, score): answer = 0 score = sorted(score, reverse = True) while len(score) >= m: score_min = min(score[:m]) answer += (score_min * m) score = score[m:] return answer 두번째 풀이: 효율성은 조금 좋아졌지만 그래도 시간 초과 def solution(k, m, score): answer = 0 score = sorted(score, reverse = True) while len(score) >= m: score_min = min(score[:m]) answer += (score_min * m) ..

Coding test 2022.12.11

[Programmers] 기사단원의 무기

문제 설명 문제 풀이 과정 문제가 쉽다고 생각했다. 사실 약수는 해당 수를 1부터 해당 수까지 나눠서 나머지가 없어야 하는 것으로 하는 건데 문제는 이중 for문을 쓰면 복잡도가 올라가서 실행 시간이 초과된다... 그래서 실패 def solution(number, limit, power): answer = 0 for i in range(1, number+1): count = 0 for j in range(1, i+1): if i % j == 0: count += 1 if count limit: answer += power else: answer += a return answer 사실상 해당 숫자의 약수 중 최대 값은 해당 숫자 제외 제곱근인 것을 이용. 해당 숫자에서 제곱근까지의 숫자를 나눠서 계산을 줄..

Coding test 2022.12.09

[Programmers] 명예의 전당 (1)

문제 설명 문제 풀이 과정 처음에 문제를 잘 이해 못 해서 몇번이고 봤다. 처음에는 가장 작은 점수만 반환하면 되는줄 알았는데, 나중에 보니 상위 k번째에서 가장 작은 점수를 반환하는 것이었다. 그래서 일차까지 슬라이싱 한 후 가장 작은 값을 반환해주는 코드를 k일차 이하일때와 초과일 때로 나누어 짰다. 나쁘지 않은 코드였다고 생각했는데 효율성이 약간 더 좋았으면.. 싶은 마음 def solution(k, score): answer = [] for i in range(1, len(score)+1): if i q를 k개 갯수만큼 상위 점수만 남아있게 함. q에서 가장 작은 값을 answer로 반환 def solution(k, score): q = [] answer = [] for s in score: q...

Coding test 2022.12.09

[Programmers] 가장 가까운 같은 글자

문제 설명 문제 풀이 과정 처음에는 list에 추가해서 index를 반환하려고 했는데, 중복 글자의 경우 가장 첫번째 index를 반환하는 것 때문에 통과를 하지 못 했다. 그래서 찾은 것이 중복 index 전부 다 반환하는 list(filter(lambda x : check[x] == i, range(len(check))))[-1] 코드 어찌저찌 실행은 되지만 효율성 측면에서 조금 아슬아슬한 감이 있어 다른 사람의 코드를 찾아보기로 함. def solution(s): check = [] answer = [] for i in list(s): if i not in check: answer.append(-1) check.append(i) elif i in check: n = (len(check) - list..

Coding test 2022.12.09
728x90