본문 바로가기

코딩 테스트

(44)
[프로그래머스] 풍선 터트리기 with Kotlin 문제일렬로 나열 된 풍선 n개가 주어진다.풍선엔 각각의 번호가 부여되어 있으며, 다음 과정을 통해 풍선을 하나만 남기려고 한다.임의의 인접한 두 풍선을 고른 뒤, 두 풍선 중 하나를 터트립니다.터진 풍선으로 인해 풍선들 사이에 빈 공간이 생겼다면, 빈 공간이 없도록 풍선들을 중앙으로 밀착시킵니다.이때 번호가 더 큰 풍선을 터트려야 하며, 딱 한번 번호가 작은 풍선을 터트릴 수 있다.마지막까지 남을 수 있는 풍선의 개수를 반환하여라. 풀이방법(핵심 아이디어는 다른 사람 블로그를 참조했습니다.)핵심 아이디어지정한 풍선이 A라고 할 때, A의 양 옆의 풍선들의 최소값이 A보다 크다면  A는 마지막까지 남을 수 있다.양쪽 중 한쪽만 최소값이 커도 한 번의 기회를 사용하면 마지막까지 남을 수 있다.다만 양쪽 다 ..
[프로그래머스] 부대복귀 with Kotlin 문제n: 총 지역 수roads: 연결되어 있는 두 지역의 정보sources: 각 부대원이 위치한 서로 다른 지역의 정보destination: 강철부대가 위치한 지역두 지역간의 길을 통과하는데 걸리는 시간은 모두 1이다.sources의 지역에 있는 각 부대원들은 강철 부대로 최단 시간 복귀하고자 한다.각 부대원들이 복귀까지 걸리는 최단 시간을 반환하는 문제복귀가 불가능한 부대원은 -1을 반환한다. 풀이 과정각 지역별로 연결되어 있는 타지역의 정보를 저장 (hashMap)destination을 1번 노드로 설정한 후, 각 지역 별 노드를 배열에 저장각각의 인덱스가 지역번호가 된다.저장은 1번의 hashMap을 이용한 BFS를 사용노드는 복귀까지의 소요 시간이 되므로, 노드 - 1 == 복귀까지 걸리는 시간이..
[프로그래머스] 가장 긴 팰린드롬 with Kotlin 문제앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다. 제한사항문자열 s의 길이 : 2,500 이하의 자연수문자열 s는 알파벳 소문자로만 구성 풀이 과정for문으로 2500부터 내려오면서 i의 길이만큼 문자열 s를 잘라서 탐색탐색 방법 >> 문자열 중간부터 양쪽으로 문자가 같은지 다른지 확인팰린드롬이 있다면 반복문 종료 이후 i 반환문자열을 잘라서 확인하는 방법substring >> 편하긴 하지만 효율성 1번에서 시간초과 나옴시작..
[프로그래머스] 2020 카카오 인턴쉽 경주로 건설 with Kotlin 문제크기가 n*n인 1과 0으로 이루어진 2차원 배열이 주어진다.시작은 0,0 이며 도착지는 n-1, n-1 이다. 1은 벽으로 이루어져있어 지나갈 수 없고, 직선은 100의 비용이, 코너는 500의 비용이 소모된다.시작부터 도착지점까지 도로를 건설한다고 할 때, 건설할 수 있는 최소 비용의 금액을 반환하여라. 자세한 문제는 프로그래머스에서https://school.programmers.co.kr/learn/courses/30/lessons/67259# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이 과정벽을 끼고 도착지까지의 최소 거리를 구하는 문제의..
[프로그래머스] 입국 심사 with Kotlin 문제대기중인 n명과 각 심사관마다 걸리는 소요 시간이 times가 매개변수로 주어질 때, 모두 통과하는 최소 시간을 구하여라 풀이 과정1. 이진 탐색을 사용하여 시간을 탐색한 후2. 해당 시간에 통과할 수 있는 사람의 수를 구한 뒤3. 통과할 수 있는 사람의 수가 n과 같다면 반환 class Solution { fun solution(n: Int, times: IntArray): Long { var start: Long = 0 var end: Long = times.maxOf{it}.toLong() * n while(start
[프로그래머스] 디스크 컨트롤러 with Kotlin 문제 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요. (단, 소수점 이하의 수는 버립니다) 자세한 문제 내용은 프로그래머스에서https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머..
[프로그래머스] 2024 KAKAO WINTER INTERNSHIP n + 1 카드게임 with Kotlin 문제1~n 사이의 수가 적힌 카드가 하나씩 있는 카드 뭉치와 동전 coin개를 이용한 게임각 카드는 중첩되지 않는다. (카드 10장이 있다면 10장 다 다른 숫자)카드 뭉치에서 n/3개의 카드를 뽑아 갖는다. (카드 뭉치 앞에서부터 n/3개)각 라운드마다 카드 뭉치에서 2장씩 뽑고, 버리거나 동전을 사용하여 갖는다. (동전 하나 당 카드 한 장)카드 뭉치에 카드가 없다면 종료또한 라운드마다 내가 갖고 있는 카드에서 n+1이 되도록 카드 두 장을 제출하고 다음 라운드로 진행제출할 수 없다면 종료(예시는 프로그래머스 참고 바랍니다.)https://school.programmers.co.kr/learn/courses/30/lessons/258707 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭..
[프로그래머스] 2024 KAKAO WINTER INTERNSHIP 주사위 고르기 with Kotlin 문제n개의 주사위가 있다.이 주사위는 6면으로 되어있고, 각 주사위의 번호는 1~n의 번호를 갖고 있다. (1번 주사위부터 n번 주사위) A가 n/2개의 주사위를 가져가고 B가 나머지 주사위를 가져간다.각각 가져간 주사위들을 던져 나온 숫자의 합을 비교해 합이 더 큰 사람이 이기는 게임이다.이때, A가 승리할 확률이 가장 높은 주사위의 조합을 반환하는 문제이다. 예시 ( n = 4 )주사위구성#1[1, 2, 3, 4, 5, 6]#2[3, 3, 3, 3, 4, 4]#3[1, 3, 3, 4, 4, 4]#4[1, 1, 4, 4, 5, 5] 조합에 따른 결과A의 주사위승무패#1, #2596196504#1, #3560176560#1, #4616184496#2, #3496184616#2, #4560176560#3,..
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 불량 사용자 with Kotlin 문제 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 1. banned_id를 기준으로 가능한 user_id를 HashMap에 저장, key는 banned_id의 인덱스 2. HashMap을 바탕으로 DFS 탐색하여 가능한 조합 List에 저장 3. List에는 중복되는 조합도 있음으로 toSet()을 활용하여 중복 제거 후 크기 반환 코드 class Solution { fun solution(user_id: Array, banned..
[프로그래머스] 베스트앨범 with Kotlin 문제 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생된 횟수입니다. ..