<문제 제시>
<문제설명>
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
<예시 입출력>
<문제 해결 과정>
배열의 위치를 바꾸는 문제이다.
좌측변수와 우측변수를 두고 그 인덱스를 증가, 감소시켜가며 대칭되는 구조의 배열을 변경해나가면 되는 문제이다.
temp를 두어 값이 중간에 삭제되지 않도록 하였다.
for(int i = 0 ; i < num_list.length / 2; i++) {
temp = num_list[lt];
num_list[lt] = num_list[rt];
num_list[rt] = temp;
lt++;
rt--;
if(lt == rt) break;
}
만약 홀수길이의 배열이어서 lt와 rt의 길이가 같아진다면 break를 하여 그 값은 변경할 필요가 없었다.
이번에는 배열 입력을 직접 입력받아 처리하고자 하였다.
(,) 쉼표로 구분하여 문자열로 입력받고 이를 StringTokenizer()를 통해 분리하고자 하였다.
st = new StringTokenizer(array, ",");
StringTokenizer()의 인자로 (,)쉼표를 입력하고, 대상은 입력받은 문자열로 하였다.
그리고 ArrayList에 넣어가며 StringTokenizer의 메서드인 hasMoreTokens()를 통해 더이상 입력할 배열이 없는지를
검사하였다.
<전체코드>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
public class reverse_array {
public static int[] solution(int[] num_list) {
int[] answer = new int[num_list.length];
int lt = 0; int rt = num_list.length-1;
int temp = 0;
for(int i = 0 ; i < num_list.length / 2; i++) {
temp = num_list[lt];
num_list[lt] = num_list[rt];
num_list[rt] = temp;
lt++;
rt--;
if(lt == rt) break;
}
for(int i = 0; i < num_list.length; i++) {
answer[i] = num_list[i];
}
return answer;
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
System.out.print("배열 입력(쉼표로 구분하여 입력해주세요) = ");
String array = br.readLine();
List<Integer> num_list = new ArrayList<>();
st = new StringTokenizer(array, ",");
int i = 0;
while(st.hasMoreTokens()) {
num_list.add(i, Integer.parseInt(st.nextToken()));
i++;
}
int[] connect = new int[num_list.size()];
for(int j = 0; j < num_list.size(); j++) {
connect[j] = num_list.get(j);
}
System.out.println(Arrays.toString(solution(connect)));
}
}
lt와 rt라는 변수를 두어 배열을 뒤집는 과정은 어렵지 않았지만
자체적으로 입력방식을 변경하여 배열을 직접 입력 후 데이터로 받아오는 과정이 어렵게 느껴졌다.
문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120821
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] '옹알이 (1)' - Java (0) | 2023.04.26 |
---|---|
[프로그래머스] '대문자와 소문자' - Java (0) | 2023.04.26 |
[프로그래머스] '외계행성의 나이' - Java (0) | 2023.04.16 |
[프로그래머스] 'OX 퀴즈' - Java (0) | 2023.04.16 |
[프로그래머스] '다음에 올 숫자' - Java (0) | 2023.02.24 |