본문 바로가기

Etc/Coding Test41

[Java] 프로그래머스 : K번째수 K번째수 문제 분석 배열1과 2차원 배열인 배열2가 주어진다. 배열1의 i번째부터 j번째까지 수를 정렬하여 k번째 수를 반환해야 한다. 배열2는 [i, j, k]를 원소로 가진다. 배열2의 길이는 고정되어 있지 않다. 먼저 반환값으로 사용할 배열을 생성한다. 배열2의 길이는 고정되어 있지 않으므로 length로 모든 요소를 순회하는 for문을 생성한다. 배열1에서 자른 요소들을 담을 list를 생성하고 배열1의 ([i][0] - 1)번 인덱스부터 ([i][1] - 1)의 인덱스를 넣는다. list를 정렬하고, get 메서드를 통해 k번째 요소를 뽑아서 반환값 담을 배열에 넣는다. 🤔 배열의 일부를 자르고 이를 담아 둘 곳이 필요하다는 점에서 한참 고민했다. 다른 효율적인 방법을 고민해 보기! 문제 풀기 .. 2022. 10. 11.
[Java] 프로그래머스 : 위장 프로그래머스 : 위장 문제 분석 상의, 하의, 겉옷 등의 큰 분류 안에 여러 의상이 존재할 때, 입을 수 있는 조합의 수를 계산한다. Map을 생성하고, Key는 의상 분류, Value는 분류에 해당하는 의상의 수를 넣는다. 경우의 수는 각 Key의 Value들의 곱이다. 이때 겉옷은 입지 않고 상의와 하의만 입는 경우의 수도 있다. 각 옷의 개수에 + 1(안 입는 경우) 아무것도 입지 않는 경우는 없다. 전체에서 - 1 (상의의 수 + 1) x (하의의 수 + 1) x (겉옷의 수 + 1) - 1 문제 풀이 import java.util.*; class Solution { public int solution(String[][] clothes) { //옷의 종류를 Key로 하고, 해당하는 옷의 개수를 V.. 2022. 10. 10.
[Java] 프로그래머스 : 전화번호 목록 프로그래머스 : 전화번호 목록 문제 분석 전화번호 목록이 주어지고, 한 전화번호가 다른 전화번호를 포함하는 경우가 있는지 확인한다. 예를 들어 전화번호 '111'과 '1112'가 있을 때, '1112'는 '111'를 포함한다. Map을 생성하고 모든 전화번호를 넣는다. 반복문을 통해 전화번호부 배열의 요소 하나하나에 접근해서 각 번호의 길이만큼의 중첩 반복문을 만들고, 번호의 일부를 포함하는 번호가 Map에 존재하는지의 여부를 확인한다. 예를 들어 전화번호 '111'과 '1112'가 있을 때, '1112'를 나눈 '1', '11', '111'가 전화번호부에 존재하는지 확인한다. 문제 풀이 import java.util.*; class Solution { public boolean solution(Stri.. 2022. 10. 9.
[Java] 백준 9935번: 문자열 폭발 https://www.acmicpc.net/problem/9935 문제 분석 문자열과 폭발 문자열을 입력받는다. 문자열에 존재하는 모든 폭발 문자열을 제거한 문자열을 반환한다. 문자열을 구셩하는 문자들을 하나씩 스택에 넣고, 폭발 문자열과 길이가 같아지는 지점부터 반복문을 통해 스택에 담긴 문자를 인덱스로 접근하여 검사한다. (스택 사이즈) - (폭발 문자열 길이) + i (i는 0부터 시작하며 폭발 문자열의 길이이다.) 검사 중 문자 하나라도 일치하지 않는다면 boolean 변수로 기록한 후 반복문을 빠져나온다. 스택에 폭발 문자열이 존재함이 증명된다면 poll을 통해 Stack에서 제거한다. 👉 스택은 역으로 데이터 삭제가 가능하므로, 폭발 문자열 길이만큼 poll 하면 된다. 원본 문자열에 대한 검.. 2022. 10. 8.
[Java] 백준 1966번: 프린터 큐 https://www.acmicpc.net/problem/1966 문제 분석 프린터의 대기열이 존재한다고 할 때, 대기열의 문서들은 중요도를 나타내는 정수로 나타낸다. 예) 1 6 2 9 각 정수를 Queue에 담고, 문서(중요도)를 하나씩 뽑아서 남아 있는 문서들의 중요도와 비교한다. 정수가 클수록 높은 중요도를 나타내며, 먼저 출력된다. 중요도에 따라 Queue에 담긴 문서들의 위치들이 바뀌므로 배열의 형태로 인덱스와 함께 저장해야 한다. 원하는 문서가 몇 번째로 출력되는지 출력하기 위해 위치가 바뀔 때마다 별도의 count를 증가시킨다. 현재의 문서가 가장 중요도가 크다면? 👉 원하는 문서와 인덱스가 일치한지 비교하여 일치한다면 반복문을 벗어난 후 count를 출력한다. 👉 원하는 문서가 아니라면 .. 2022. 10. 7.
[Java] 프로그래머스 스택 / 큐 : 기능개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 풀이 각 기능의 진행도가 담긴 배열과 각 기능의 속도가 담긴 배열이 주어진다. 진행도가 100%가 되는 날짜가 며칠 뒤인지 계산해서 Queue에 담는다. 작업은 동.. 2022. 10. 2.