162. 왼쪽 오른쪽
import java.util.*;
class Solution {
public String[] solution(String[] str_list) {
String[] answer = {};
for(int i=0; i<str_list.length; i++){
if(str_list[i].equals("l")){
return Arrays.copyOfRange(str_list, 0, i);
} else if(str_list[i].equals("r")){
return Arrays.copyOfRange(str_list, i+1, str_list.length);
}
}
return answer;
}
}
<작성한 코드>
반복문으로 str_list의 길이까지 반복시켰다. 순서대로 돌리면서 처음 만나는 원소중 l, r이 있을 때 if문에 걸린다. l을 만났다면 Arrays.copyOfRange()를 사용해서 str_list의 첫 번째 원소부터 i번째 이전까지의 원소들을 복사해서 반환한다. r을 만나게 된다면 str_list의 i+1번째 원소부터 마지막 원소까지 복사 후 반환한다. if문에 걸리지 않고 for문이 끝난다면 answer을 그대로 반환한다.
163. 순서 바꾸기
import java.util.*;
class Solution {
public int[] solution(int[] num_list, int n) {
List<Integer> list = new ArrayList<>();
for(int i=n; i<num_list.length; i++){
list.add(num_list[i]);
}
for(int i=0; i<n; i++){
list.add(num_list[i]);
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<작성한 코드>
리스트를 하나 만들고 n번째부터 마지막 원소까지 list에 저장했다. 그 뒤 남은 원소를 저장하기 위해 0번째 원소부터 n이전까지의 원소들을 저장하고 for문을 사용해서 list의 값을 answer에 초기화시켜주고 반환하였다.
164. n번째 원소부터
class Solution {
public int[] solution(int[] num_list, int n) {
int[] answer = new int[num_list.length - n + 1];
int cnt = 0;
for(int i=n-1; i<num_list.length; i++){
answer[cnt] = num_list[i];
cnt++;
}
return answer;
}
}
<작성한 코드>
간단한 문제였다. answer의 길이를 선언해준뒤 for문을 사용해서 answer [0]부터 차례대로 num_list [i]를 넣어주고 반환하면 된다.
165. 배열 조각하기
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] query) {
for(int i=0; i<query.length; i++){
if(i%2 == 0){
arr = Arrays.copyOfRange(arr, 0, query[i]+1);
} else{
arr = Arrays.copyOfRange(arr, query[i], arr.length);
}
}
return arr;
}
}
<작성한 코드>
간단한 문제였다. for문으로 query의 길이만큼 반복시켜준뒤 i가 홀수일 때는 0번째 원소부터 query번째 값까지 복사해서 대입해 주고 짝수일때는 query번째 값부터 배열의 마지막 원소까지 복사해서 arr에 덮어줬다. 그 뒤 arr를 반환해 줬다.
166. 2의 영역
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
List<Integer> list = new ArrayList<>();
for(int i=0; i<arr.length; i++){
if(arr[i] == 2){
list.add(i);
}
}
if(list.size() == 0){
return new int[]{-1};
}
arr = Arrays.copyOfRange(arr, list.get(0), list.get(list.size()-1)+1);
return arr;
}
}
<작성한 코드>
arr의 길이만큼 반복문을 돌리며 arr [i]가 2일 때 list에 i값을 더해줘서 2가 나온 인덱스 값을 저장해 줬다. 그 뒤 list의 크기가 0이면 2가 없다는 뜻이니 -1을 반환해 줬다. 여기에 걸리지 않는다면 Arrays.copyOfRange를 사용해서 arr의 2가 첫 번째 나온 list(0) 값과 arr의 마지막 값도 포함해야 하니 list의 마지막인덱스에서 +1을 해준만큼 복사해 줬다. 그 뒤 arr를 반환하였다.
167. 배열 만들기 3
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
List<Integer> list = new ArrayList<>();
for(int i=0; i<intervals.length; i++){
int a = intervals[i][0];
int b = intervals[i][1];
for(int j=a; j<=b; j++){
list.add(arr[j]);
}
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<작성한 코드>
for문을 사용해서 intervals의 길이까지 반복시켰고 시작점을 a, 종료점을 b로 잡았다. 내부 for문에서는 a부터 b까지의 값을 list에 추가해 줬고 마지막 for문에서는 list의 값들을 answer에 초기화해 주고 반환하였다.
168. 첫 번째로 나오는 음수
class Solution {
public int solution(int[] num_list) {
int answer = -1;
for(int i=0; i<num_list.length; i++){
if(num_list[i] < 0){
answer = i;
break;
}
}
return answer;
}
}
<작성한 코드>
간단한 문제다. for문으로 모든 원소를 확인하였고 if문을 사용해서 num_list [i]가 음수면 answer에 i를 대입하고 break를 사용하여 for문을 종료시켰다. 그리고 answer의 값을 반환하였다.
169. 리스트 자르기
import java.util.*;
class Solution {
public int[] solution(int n, int[] slicer, int[] num_list) {
List<Integer> list = new ArrayList<>();
int a = slicer[0];
int b = slicer[1];
int c = slicer[2];
if(n == 1){
for(int i=0; i<=b; i++){
list.add(num_list[i]);
}
}else if(n == 2){
for(int i=a; i<num_list.length; i++){
list.add(num_list[i]);
}
}else if(n == 3){
for(int i=a; i<=b; i++){
list.add(num_list[i]);
}
}else{
for(int i=a; i<=b; i+=c){
list.add(num_list[i]);
}
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<작성한 코드>
n이 1~4까지 각각 수행하는 게 다르기 때문에 조건문을 사용해서 각각의 상황에 다른 코드를 부여했다. list에 원소값이 추가가 되면 마지막에 answer안에 list의 값을 대입해 주고 종료하였다.
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (178~187번 문제풀이) (1) | 2023.10.19 |
---|---|
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (170~177번 문제풀이) (0) | 2023.10.18 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (150~161번 문제풀이) (1) | 2023.10.17 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (140~149번 문제풀이) (0) | 2023.10.16 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (134~139번 문제풀이) (1) | 2023.10.16 |
남건욱's 공부기록