목록Algorithms/Journal (4)
Moe's Tech Blog

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성해주세..

오늘 필자는 자바스크립트로 프로그래머스의 예산 문제를 풀었었습니다. 몇일 전에 파이썬으로 풀었던 코드를 바탕으로 테스트 케이스를 먼저 만들고 알고리즘을 만들며 풀어나갔는데 테스트 케이스 5번, 7~16번이 틀렸습니다. 이상했었습니다. 파이썬 코드에서는 같은 코드가 정답이라고 나와있었기 때문입니다. function solution(d, budget) { let count = 0; let acc = 0; d.sort(); for (const val of d) { if (acc + val > budget) { break; } acc += val; count += 1; } return count; } 의심되는 테스트 케이스를 만들고 반복적으로 풀었습니다. 계속 틀렸었습니다. 마지막으로 MDN의 javascrip..

어제 필자는 프로그래머스의 ‘신규 아이디 추천’ 문제를 풀었다. import re def solution(new_id): def process_level_1(user_id): """ new_id의 모든 대문자를 대응되는 소문자로 치환합니다 """ return user_id.lower() def process_level_2(user_id): """ new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. """ return re.sub(r"[^a-z0-9\-\_\.]", "", user_id) def process_level_3(user_id): """ new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. """ re..

오늘 필자는 프로그래머스의 ‘신고 결과 받기’ 문재를 풀었다 def solution(id_list, report, k): answer = [] report_count = {i: 0 for i in id_list} report_details = {i: set() for i in id_list} stopped_ids = set() # 리포트 상세 정보 생성 for item in report: item = item.split() report_by, report_to = item[0], item[1] if report_to in report_details[report_by]: continue report_count[report_to] += 1 report_details[report_by].add(report_t..