본문 바로가기
반응형

분류 전체보기313

2021 - 메뉴 리뉴얼 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr [ 문제풀이 ] 주어진 orders들로 만들 수 있는 길이가 2 이상인 코스들을 조합한 후 course의 길이마다 최대 주문 횟수를 가지는 코스들을 추출하면 되는 문제이다. ​"AC" 코스나 "CA" 코스는 똑같은 코스이기 때문에 조합을 통해 가능한 모든 코스를 추출해주면 된다. import java.util.*; class Solution { Map hm; Li.. 2021. 8. 9.
2021 - 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr [ 문제풀이 ] 주어진 문자열을 주어진 조건대로 변환해주면 되는 문제이다. 기본적인 문자열 함수를 안다면 구현하는데 크게 어려움이 없을 것이다. ​다른 풀이를 살펴보니 정규 표현식을 이용하면 코드가 굉장히 짧고 간결해진 것을 확인할 수 있었다. 정규 표현식은 알아두면 유용할 것 같아서 후에 따로 공부해봐야겠다. class Solution { public .. 2021. 8. 9.
백준 16434 : 드래곤 앤 던전 https://www.acmicpc.net/problem/16434 16434번: 드래곤 앤 던전 첫 번째 줄에 방의 개수 N (1 ≤ N ≤ 123,456) 과 용사의 초기 공격력 HATK (1 ≤ HATK ≤ 1,000,000) 가 주어집니다. i+1번째 줄엔 i번째 방의 정보를 나타내는 세개의 정수 ti, ai, hi (ti ∈ {1, 2}, 1 www.acmicpc.net [ 문제풀이 ] 최솟값을 찾는 최적화 문제이기 때문에 파라메트릭 서치를 활용하면 해결할 수 있다. 요새 파라메트릭 서치 문제를 자주 풀어서 그런지 최적 값을 구하는 문제를 보면 자연스럽게 dp, 그리디, 파라메트릭 서치 중 하나를 떠올리게 되는 것 같다. 주의해야할 점은 포션을 먹어도 Hmaxhp를 넘길 수 없는 조건과 용사가 .. 2021. 8. 9.
2020 - 블록 이동하기 https://programmers.co.kr/learn/courses/30/lessons/60063 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr [ 문제풀이 ] 2020 카카오 블라인드 기출 마지막 문제이다. 18. 19. 20년도 기출을 풀어보면서 느끼는 거지만 문제 배치가 난이도 순인 것은 아닌 것 같다. ​전형적인 bfs + dp 문제이다. 현재 로봇의 위치에서 상하좌우로 이동 및 회전할 수 있는 경우의 수를 bfs(최소 거리)를 통해 탐색해주면서 dp를 활용해 중복 방문을 해결하면 쉽게 해결할 수 있다. ​로봇의 상태는 2가지.. 2021. 8. 8.
2020 - 외벽 점검 https://programmers.co.kr/learn/courses/30/lessons/60062# 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하 programmers.co.kr [ 문제풀이 ] 한 명부터 모든 친구를 각 영역에 배치하면서 가능한 경우를 찾아주면 되는 완전 탐색 문제이다. ​이동을 시계/반시계 방향으로 할 수 있지만 이는 결국 중복되는 값이기 때문에 한 방향으로만 처리해주도록 하자. 이를 편하게 구현하기 위해 원형을 직선으로 변경해주면 된다. ​예제 1번에서 처리해야 할 영역이 1, 5, 6, 10인 경우 각각 n(12.. 2021. 8. 8.
2020 - 기둥과 보 설치 https://programmers.co.kr/learn/courses/30/lessons/60061 코딩테스트 연습 - 기둥과 보 설치 5 [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]] [[1,0,0],[1,1,1],[2,1,0],[2,2,1],[3,2,1],[4,2,1],[5,0,0],[5,1,0]] 5 [[0,0,0,1],[2,0,0,1],[4,0,0,1],[0,1,1,1],[1,1,1,1],[2,1,1,1],[3,1,1,1],[2,0,0,0],[1,1,1,0],[2,2,0,1]] [[ programmers.co.kr [ 문제풀이 ] 별다른 알고리즘 필요 없이 주어진 조건대로 구현하면 되는 문제지만 .. 2021. 8. 8.
2020 - 가사 검색 https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr [ 문제풀이 ] Trie 자료구조를 활용하는 문제이다. 모든 문자열에 대해서 정방향, 역방향 Trie를 구성해 준 후 쿼리를 해주면 된다. ​각각 한 개의 Trie를 통해 문자열을 관리해줘서 해결할 수도 있지만 문자열의 길이에 따라 쿼리 값이 결정되기 때문에 조금 구현하기가 난해할 것이다. ​이를 위해 모든 문자열의 길이만큼 Trie 자료구조를 구현해준다. 문자열이 최대 10000이기 때문에 2만 개의 Trie를 구현해준다. ​이렇게 구현한 후 쿼리를 하게 되면 "????" 형태의 모든 문자열이 '?'인 경우만 별도로 처리해주면 해결할 수 있.. 2021. 8. 8.
2020 - 자물쇠와 열쇠 https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr [ 문제풀이 ] 4방향 회전한 Key로 자물쇠 Lock을 채울 수 있는지를 확인하는 전형적인 완전 탐색 문제이다. key를 회전하는 것은 쉬운데 회전한 후 lock과 어떻게 비교할 것인지가 조금 난해한 문제이다. ​모든 key를 주어진 lock으로 비교하기에는 인덱스 관리하기가 상당히 까다롭다. 이를 쉽게 해결하기 위해 기존의 lock을 확장시켜 인덱스를 넓혀주도록 하자. Key의 크기 M은 항상 lock의 크.. 2021. 8. 8.
2020 - 괄호 변환 https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr [ 문제풀이 ] 주어진 조건 그래도 구현하기만 하면 되는 정말 간단한 문제이다. 문제에서 "이렇게 구현하면 된다!"라고 가이드라인을 명시해놨기 때문에 그대로 따라서 구현해주면 되는 문제이다. ​'(', ')'로 이루어진 문자열이 올바른 괄호 문자열인지 판단하는 방법은 Stack 자료구조를 배울 때 아마 접해봤을 것이다. 너무나 잘 알려진 알고리즘이기 때문에 따로 .. 2021. 8. 8.
반응형