Coding Practice 25

수열과 구간 쿼리 2

[문제] 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요. 단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다. arr queries result [0, 1, 2, 4, 3] [[0, 4, 2],[0, 3, 2],[0, 2, 2]] [3, 4, -1] [답] import java.util.*; class Solution { public int[] solution(int[] arr, int[][] ..

수열과 구간 쿼리 3

[문제] 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다. 각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다. 위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요. arr queries result [0, 1, 2, 3, 4] [[0, 3],[1, 2],[1, 4]] [3, 4, 1, 0, 2] 예시) arr [0, 1, 2, 3, 4] [3, 1, 2, 0, 4] [3, 2, 1, 0, 4] [3, 4, 1, 0, 2] queries배열안에 들어있는 숫자는 배열의 위치를 뜻함. [답] class Solution { p..

수 조작하기 2

[문제] 정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다. "w" : 수에 1을 더한다. "s" : 수에 1을 뺀다. "d" : 수에 10을 더한다. "a" : 수에 10을 뺀다. 그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다. 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요. numLog result [0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -..

수 조작하기 1

[문제] 정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다. "w" : n이 1 커집니다. "s" : n이 1 작아집니다. "d" : n이 10 커집니다. "a" : n이 10 작아집니다. 위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요. n control result 0 "wsdawsdassw" -1 0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1 [답] class Solution { public int solution(int n, String..

마지막 두 원소

[문제] 정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요. num_list result [2, 1, 6] [2, 1, 6, 5] [5, 2, 1, 7, 5] [5, 2, 1, 7, 5, 10] [답] class Solution { public int[] solution(int[] num_list) { //원래의 원소갯수보다 하나 더 늘려야함으로 +1 해줌 int[] answer = new int[num_list.length + 1]; int last = num_list[num_list.length - 1]; ..

이어 붙인 수

[문제] 정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요. num_list result [3, 4, 5, 2, 1] 393 [5, 7, 8, 3] 581 [답] class Solution { public int solution(int[] num_list) { int answer = 0; String odd = ""; String even = ""; for(int i = 0; i < num_list.length; i++) { if(num_list[i] % 2 == 1) { odd += (num_list[i]; } else { even += num_list[i]; }..

원소들의 곱과 합

[문제] 정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요. num_list result [3, 4, 5, 2, 1] 1 [5, 7, 8, 3] 0 [답] class Solution { public int solution(int[] num_list) { int answer = 0; //곱은 0으로 설정하면 곱해도 0나와서 1로 초기값 설정 int answer2 = 1; for(int i = 0; i < num_list.length; i++) { answer += num_list[i]; answer2 *= num_list[i]; } //for문이 끝나고 if문 작성해야함 //모든원소..

등차수열의 특정한 항만 더하기

[문제] 두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요. a d included result 3 4 [true, false, false, true, true] 37 7 1 [false, false, false, true, false, false, false] 10 [답] class Solution { public int solution(int a, int d, boolean[] included) { int answer = 0; for(int i = ..

코드 처리하기

[문제] 문자열 code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다. mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다. mode가 0일 때 code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret(result)의 맨 뒤에 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다. mode가 1일 때 code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret(result)의 맨 뒤에 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 1에서 0으로 ..

flag에 따라 다른 값 반환하기

[문제] 두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요. a b flag result -4 7 true 3 -4 7 false -11 [답] class Solution { public int solution(int a, int b, boolean flag) { if(flag == true) { return a + b; } else { return a - b; } } } [다른사람의 풀이] class Solution { public int solution(int a, int b, boolean flag) { //삼항 연산자 사용 return flag ? a + b :..