프로그래머스의 점프와 순간 이동 문제다. 일정 거리를 이동해야 하는 상황에서 배터리를 한 칸 소모해서 앞으로 이동하거나 비용 없이 현재까지 진행한 거리의 2배 위치로 텔레포트할 수 있는 슈트가 있다고 할 때 주어진 거리까지 이동할 수 있는 최소한의 배터리 비용을 계산하
프로그래머스의 배달 문제다.주어진 비방향 가중치 그래프에서 출발 노드로부터 일정 비용 이내로 도달할 수 있는 노드들의 갯수를 세는 것이 목적이다. 이전에 풀었던 그래프 문제들은 노드의 연결 정보만 주어졌기 때문에 하나의 사전 자료형을 이용하여 풀 수 있었지만 이번에는
프로그래머스의 숫자 게임 문제다.두 정수 배열이 주어질 때 한 배열을 기준으로 정수를 하나씩 비교해서 더 크면 승점을 얻는 게임이 있을 때 배열의 순서를 조합하여 얻을 수 있는 가장 큰 승점을 반환하는 것이 목적이다.예를 들어 \[5,1,3,7]과 \[2,2,6,8]이
프로그래머스의 우유와 요거트가 담긴 장바구니 문제다.장바구니 테이블(레코드 id, 장바구니 id, 항목 이름, 가격)이 있을 때 두 상품을 담고 있는 레코드의 장바구니 id를 반환하는 문제다.객체지향 언어였다면 자료구조 안에 두 상품이 있는지 확인하면 되겠지만 테이블에
프로그래머스의 기지국 설치 문제다.고정된 전송 범위를 가지는 기지국들이 일정 거리로 떨어져 있을 때 기지국의 전송 범위에 포함되지 않는 모든 곳에 데이터를 전송할 수 있도록 기지국을 최소한으로 배치하는 문제다.사실 너무 어렵게 생각해서 그런지 풀이가 딱 떠오르지 않았다
프로그래머스의 위장 문제다.어떤 스파이가 변장을 위해 옷을 조합해서 입을 때 주어진 옷들로 총 몇 종류의 조합을 만들 수 있는지 계산하는 문제다. 제한은 무조건 최소한 한 가지의 옷을 입어야 한다는 것이다.예를 들어 모자가 2개(페도라, 야구 모자), 안경이 1개(뿔테
프로그래머스의 베스트 앨범 문제다.음악 스트리밍 사이트에서 장르별로 가장 많이 재생된 곡을 두 곡씩 뽑아서 출시하려 할 때 이를 구하는 알고리즘을 작성하는 문제다. 단순히 두 곡씩 뽑는건 아니고 다음과 같은 제한이 있다.장르 순서는 해당 장르 노래의 재생 횟수의 합(내
프로그래머스의 단어 변환 문제다.단어를 한 번에 한 글자만 바꿀 수 있다고 할 때 주어진 단어 리스트를 활용하여 시작 단어에서 목표 단어까지 변환할 수 있는지를 탐색하는 문제다.중복되는 단어는 없으며 모든 단어의 글자는 동일하기 때문에 한 글자씩 변환하며 그래프 탐색으
프로그래머스의 디스크 컨트롤러 문제다.하드 디스크 드라이브에서 헤드가 움직이는 알고리즘을 구현하라는 것 같은데 왠지 프로세스 스케줄링(SJT)이 생각나는 문제다. 문제에서 명시적으로 언급하지 않아서 헷갈렸는데 대기 큐에 있는 작업 중 가장 작은 작업시간을 가진 작업을
프로그래머스의 전화번호 목록 문제다.여러 개의 전화번호 목록이 주어질 때 한 전화번호가 다른 전화번호의 접두사인지 확인하는 문제다. 접두사라는 문제의 조건 때문에 죄다 자료구조에 집어넣고 하나 하나 startsWith 메서드로 비교하면 될 것 같지만 효율성 테스트에서
프로그래머스의 베스트앨범 문제다. 이전에 파이썬으로 푼 적이 있었지만 자바 코딩테스트를 대비해서 다시 풀어보고 있다.이전 풀이와 비교해서 정말 극명한 차이점은 파이썬으로만 풀다 보니 동일한 알고리즘을 자바에서는 어떻게 구현해야 할 지 정말 난감했다는 것이다. 주석 포함
프로그래머스의 디스크 컨트롤러 문제다.
프로그래머스의 가장 큰 수 문제다.주어진 정수를 조합하여 만들 수 있는 가장 큰 수를 반환하는 문제로 예를 들어 6, 10, 2가 주어진다면 여러 조합이 있을 수 있겠지만 6210이 가장 큰 수의 조합이 된다. 입력값은 1에서 1000 사이의 숫자가 최대 100,000
프로그래머스의 H-Index 문제다.좀 특이한 개념인데 어떤 사람의 논문이 여러 개 있을 때 H번 이상 인용된 논문이 H개 이상 있다면 이를 그 사람의 H-Index로 나타낸다는 것이다. 문제에서는 배열로 각 논문의 인용 횟수가 주어지며 이를 기반으로 최대 H-Inde
프로그래머스의 가장 큰 수 문제다.이전에 작성한 파이썬 풀이와 동일한 문제다.이전에 문제 해설을 찾아볼 때 파이썬 뿐 아니라 자바 풀이도 본 적이 있어 이를 기반으로 풀어보았다.파이썬에서는 문자열을 비교하는 방법을 지정할 수 없어서 문자열을 여러 번 이어붙이고 비교했지
프로그래머스의 큰 수 만들기 문제다.문자열로 이루어진 숫자가 주어질 때 주어진 갯수만큼 글자를 빼서 만들 수 있는 가장 큰 수를 찾는 것이 목적이다. 예를 들어 "1924"가 주어지고 2개의 숫자를 뺀다면 "94"가 만들 수 있는 가장 큰 숫자가 될 것이다. 비슷하게
프로그래머스의 구명보트 문제다.Greedy에 속하며 배낭 문제와 유사하다고 생각할 수 있는데 이번에는 한 개의 배낭이 아니라 여러개의 배낭에 담을 수 있다고 생각하면 될 것이다.처음으로 시도했던 풀이는 맨 처음 사람부터 두 명씩 뽑아서 무게를 초과하지 않는다면 보트에