코딩테스트/프로그래머스

    [프로그래머스] Level 4 - 가사 검색 (Python)

    [프로그래머스] Level 4 - 가사 검색 (Python)

    https://school.programmers.co.kr/learn/courses/30/lessons/60060 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ Solution words를 길이별로 따로 담아두고 query 하나마다 몇 개 있는지 확인한다. 처음에는 그냥 완탐으로 돌렸다. 바로 시간초과 엔딩. 차라리 그냥 틀렸으면 ^^,, 초과 해결하기 빡세 새로운 방법! 와일드카드에는 a부터 z까지 들어갈 수 있다. 그럼 와일드카드에 a를 넣었을 때, 배열 안에서 몇 번째 인덱스에 위치하는지 구하고, z를 넣었을 때 몇 번째 인덱스에 위치하는지 구한..

    [프로그래머스] Level 4 - 무지의 먹방 라이브 (Python)

    [프로그래머스] Level 4 - 무지의 먹방 라이브 (Python)

    https://school.programmers.co.kr/learn/courses/30/lessons/42891 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ Solution 우선순위 큐, heap를 이용하여 문제를 풀었다. 먼저 heapq에 (음식 시간, 음식 번호) 순으로 넣어준다. 그럼 작은 순서대로 정렬이 된다. 이제 queue를 앞에서부터 돌면서 해당 음식을 다 먹기까지 걸리는 시간을 계산해 준다. 이때, 현재까지 걸린 시간 (sum_time)과 해당 음식을 다 먹는 데 걸리는 시간을 더했을 때 k 보다 크다면 탈출하도록 while 문을 작..

    [프로그래머스] Level 3 - [카카오 인턴] 보석 쇼핑 (Python)

    [프로그래머스] Level 3 - [카카오 인턴] 보석 쇼핑 (Python)

    https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ Solution 투 포인터를 이용해서 문제를 풀었다. end를 len(gems)-1까지 증가시키면서 보석을 추가해준다. Counter을 이용해 가진 보석의 종류를 세고 이때 가진 보석의 종류가 전체 보석의 종류와 같을 때, 해당 인덱스를 answer에 추가해준다. 그리고 start를 증가시켜가면서 다시 위 과정을 반복한다. answer을 정렬하고 첫 번째 요소를 리턴한다. ✅ Code from..

    [프로그래머스] Level 3 - 불량 사용자 (Python)

    [프로그래머스] Level 3 - 불량 사용자 (Python)

    https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ Solution permutations를 이용해서 banned_id의 길이만큼 가능한 순열을 모두 구한다. 각각 순열을 banned_id와 비교하면서 불량 사용자 배열이 될 수 있는지 체크한다. 만약 가능하다면 answer에 넣어준다. 이때, 불량 사용자의 아이디 목록 내용이 동일한 경우에는 개수를 더해주면 안되므로 answer에 존재하지 않을 때만 넣어준다. ✅ Code from iterto..

    [프로그래머스] Level 3 - 표 편집 (Python)

    [프로그래머스] Level 3 - 표 편집 (Python)

    https://school.programmers.co.kr/learn/courses/30/lessons/81303 ✅ Solution 그냥 리스트로 풀었다가 정확성만 통과하고 효율성은 통과를 못해서 구글링 해봤더니 링크드 리스트로 푸는 문제라는 걸 알았다. 너무 어려워 linked_list는 딕셔너리로 선언하고, key는 인덱스, value는 해당 인덱스와 연결된 앞 인덱스와 뒷 인덱스로 이루어져 있다. 0:[-1, 1], 1:[0, 2], 2:[1, 3]... "U X", "D X"의 경우에는 단순하게 연결된 리스트를 X번 돌면서 확인하면 된다. {0:[-1, 1], 1:[0, 2], 2:[1, 3], 3:[2, 4]} 일 때, k = 3, "U 2" 라면 인덱스가 2칸 앞에 있는 인덱스를 찾아야 하므..

    [프로그래머스] Level 3 - [1차] 셔틀버스 (Python)

    [프로그래머스] Level 3 - [1차] 셔틀버스 (Python)

    https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✅ Solution hh:mm 형식으로 된 timetable을 모두 분으로 나타내 주고, 내림차순 정렬한다. n회 t분 간격으로 셔틀버스가 운영되므로 n번 반복문을 돌면서 셔틀버스 오는 시간에 탈 수 있는 인원을 지운다. timetable의 길이가 1 이상이고, 셔틀버스 도착시간보다 일찍 혹은 같은 시간에 대기했으며 이미 탄 인원이 m명 이하일 때 태운다. 콘은 무사히 사무실에 도착해야 하므로 가..

    [프로그래머스] Level 3 - [1차] 추석 트래픽 (Python)

    [프로그래머스] Level 3 - [1차] 추석 트래픽 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/17676 times[j][0]: cnt += 1 answer = max(answer, cnt) return answer

    [프로그래머스] Level 2 - N개의 최소공배수 (Python)

    [프로그래머스] Level 2 - N개의 최소공배수 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr ✅ Solution 여러개의 수의 최소 공배수를 구하기 위해서는 두 수의 최소 공배수를 구한 뒤, 해당 수와 그 다음수와의 공배수 구하는 과정을 반복하면 된다. 예를 들어, [2, 6, 8, 14] 에서 2와 6의 최소공배수는 6이다. 그리고 6과 8의 최소 공배수는 24이다. 마지막으로 24와 14의 최소 공배수는 1..