프로그래머스 코딩테스트 입문 - DAY10
사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.
x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.
dot | result |
---|---|
[2, 4] | 1 |
[-7, 9] | 2 |
class Solution {
public int solution(int[] dot) {
int answer = 0;
if(dot[0] > 0) {
if(dot[1] > 0)
answer = 1;
else
answer = 4;
}
else {
if(dot[1] >0)
answer = 2;
else
answer = 3;
}
return answer;
}
}
정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.
num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.
num_list | n | result |
---|---|---|
[1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
[100, 95, 2, 4, 5, 6, 18, 33, 948] | 3 | [[100, 95, 2], [4, 5, 6], [18, 33, 948]] |
import java.util.Arrays;
class Solution {
public int[][] solution(int[] num_list, int n) {
int[][] answer = new int[num_list.length/n][n];
int a = 0;
for(int i=0;i<num_list.length/n;i++) {
for(int j=0;j<n;j++) {
answer[i][j] = num_list[a];
a++;
}
}
return answer;
}
}
주어진 배열의 값들을 n개씩 묶어 이차원 배열에 담는 문제이다.
따라서 answer 배열의 크기는 위와 같이 주고, 중첩for문을 통해 배열에 값을 나눠 넣는다
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
numbers | k | result |
---|---|---|
[1, 2, 3, 4] | 2 | 3 |
[1, 2, 3, 4, 5, 6] | 5 | 3 |
[1, 2, 3] | 3 | 2 |
class Solution {
public int solution(int[] numbers, int k) {
int answer = 0;
int idx = 1;
for(int i=0;i<k-1;i++) {
idx+=2;
}
if(idx>numbers.length) {
idx = idx % numbers.length;
}
return idx;
}
}
k-1까지 idx변수를 2씩 증가시킨다. k번째가 누구인지 구하는 것이므로 k-1까지 진행
이렇게 구해진 idx가 답인데, 만약 idx가 참가한 인원인 numbers보다 작아야 하므로, numbers.length로 나눈 나머지를 idx에 넣고
리턴한다.
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
balls | share | result |
---|---|---|
[1, 2, 3] | "right" | [3, 1, 2] |
[4, 455, 6, 4, -1, 45, 6] | "left" | [455, 6, 4, -1, 45, 6, 4] |
class Solution {
public int[] solution(int[] numbers, String direction) {
int[] answer = new int [numbers.length];
int idx = numbers.length-1;
int idx2 = 1;
System.out.println(idx);
if(direction.equals("right")) {
for(int i=0;i<numbers.length;i++){
answer[i] = numbers[idx];
idx++;
if(idx>numbers.length-1)
idx = 0;
}
}
else{
for(int i=0;i<numbers.length-1;i++){
answer[i] = numbers[idx2];
idx2++;
}
answer[numbers.length-1] = numbers[0];
}
return answer;
}
}
right인 경우, left인 경우를 if문으로 구분했다.
right : 배열의 마지막 값이 첫번째 값이 되도록 한다.
left : 배열의 두번째 값부터 한칸 씩 left시켜준 후, 첫번째 값을 마지막 값에 넣는다.
출처 : https://school.programmers.co.kr/learn/challenges
이미지 출처 : 작가 storyset 출처 Freepik