1️⃣ 점의 위치
문제 설명
사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.
- x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
- x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
- x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
- x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.
x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.
제한사항
- dot의 길이 = 2
- dot[0]은 x좌표를, dot[1]은 y좌표를 나타냅니다
- -500 ≤ dot의 원소 ≤ 500
- dot의 원소는 0이 아닙니다.
입출력 예
dot | result |
[2, 4] | 1 |
[-7, 9] | 2 |
💻 나의 풀이
class Solution {
public int solution(int[] dot) {
int answer = 0;
if(dot[0]>0 && dot[1]>0){
answer=1;
} else if(dot[0]<0 && dot[1]>0){
answer=2;
} else if(dot[0]<0 && dot[1]<0){
answer=3;
} else{
answer=4;
}
return answer;
}
}
if else if 문을 이용해 dot배열의 원소들이 양수냐 음수냐를 조건으로 주어서 풀었습니다.
🔎 다른 사람의 풀이
class Solution {
public int solution(int[] dot) {
int xParam = dot[0] < 0 ? 1 : 0;
int yParam = dot[1] < 0 ? 2 : 0;
return 1 + ((xParam | yParam) ^ (yParam >> 1));
}
}
2️⃣ 2차원으로 만들기
문제 설명
정수 배열 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]] |
제한사항
- num_list의 길이는 n의 배 수개입니다.
- 0 ≤ num_list의 길이 ≤ 150
- 2 ≤ n < num_list의 길이
입출력 예
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]] |
💻 나의 풀이
class Solution {
public int[][] solution(int[] num_list, int n) {
int[][] answer = new int[num_list.length / n][n]; // num_list의 길이를 n으로 나눈 값과 n으로 설정
for (int i = 0; i < (num_list.length / n); i++) { // 행
for (int j = 0; j < n; j++) { // 열
answer[i][j] = num_list[i * n + j];
}
}
return answer;
}
}
🔎 다른 사람의 풀이
class Solution {
public int[][] solution(int[] num_list, int n) {
int[][] answer = {};
int length = num_list.length;
answer = new int[length/n][n];
for(int i=0; i<length; i++){
answer[i/n][i%n]=num_list[i];
}
return answer;
}
}
- int[][] answer = {};: 초기에 빈 배열로 초기화합니다. 이 부분은 이차원 배열을 선언할 때 크기를 지정하지 않고, 나중에 크기를 변경하기 위한 용도로 사용됩니다.
- length 변수: 입력 배열 num_list의 길이를 저장합니다.
- answer = new int[length/n][n];: 이차원 배열 answer를 초기화합니다. 행의 개수는 length/n, 열의 개수는 n입니다.
- for(int i=0; i<length; i++): 입력 배열의 각 원소를 이차원 배열에 복사하기 위한 반복문을 시작합니다.
- answer[i/n][i%n] = num_list[i];: 1차원 배열의 i번째 원소를 이차원 배열의 적절한 위치에 할당합니다.
3️⃣ 공 던지기
문제 설명
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
제한사항
- 2 < numbers의 길이 < 100
- 0 < k < 1,000
- numbers의 첫 번째와 마지막 번호는 실제로 바로 옆에 있습니다.
- numbers는 1부터 시작하며 번호는 순서대로 올라갑니다.
입출력 예
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 count = 0;
int index = 0;
while (count < k) {
if (index >= numbers.length) { // index가 numbers의 길이보다 크거나 같다면
index %= numbers.length; // 나머지를 할당
}
answer = numbers[index];
index += 2; // 한 명 건너뛰기 = 2씩 증가
count++; // 횟수 +1
}
return answer;
}
}
🔎 다른 사람의 풀이
class Solution {
public int solution(int[] numbers, int k) {
return (k-1)*2 % numbers.length+1;
}
}
4️⃣ 배열 회전시키기
문제 설명
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 3 ≤ numbers의 길이 ≤ 20
- direction은 "left" 와 "right" 둘 중 하나입니다.
입출력 예
numbers | direction | 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];
if (direction.equals("right")) {
answer[0] = numbers[numbers.length - 1];
for (int i = 0; i < numbers.length - 1; i++) {
answer[i + 1] = numbers[i];
}
} else {
answer[numbers.length - 1] = numbers[0];
for (int i = 1; i < numbers.length; i++) {
answer[i - 1] = numbers[i];
}
}
return answer;
}
}
'프로그래머스 > 0단계' 카테고리의 다른 글
DAY12 문자열, 정렬, 사칙연산, 수학 (1) | 2023.11.29 |
---|---|
DAY11 수학, 반복문 (1) | 2023.11.27 |
DAY9 수학, 문자열, 해시, 완전탐색, 조건문 (1) | 2023.11.25 |
DAY8 배열, 구현, 수학 (1) | 2023.11.25 |
DAY7 문자열, 조건문, 수학, 반복문 (1) | 2023.11.24 |