📑 1. 문제설명


💡 2. 풀이과정
결과값 담을 ArrayList<String> answer 선언 *- 받은 String[] quiz를 공백 기준으로 분리해서 String[] splited에 담기 - `quiz[i].split(" ")`
- String 타입의 배열 splited에 들어 있는 피연산자(x,y)와 결과값은 문자열을 숫자로 형변환 - `Integer.parseInt`
- 연산자가 +인 경우와 -인 경우 나눠서 연산 수행하고 결과를 calculated 변수에 저장
- caculated 값과 result 값을 비교해서 같으면 "O", 틀리면 "X"를 ArrayList에 추가
ArrayList를 Array로 변환해서 return
다 풀고 나서 생각 해 보니 1,6은 필요 없음
반환할 배열의 길이가 정해져 있으므로 그냥 quiz의 길이 만큼 일반 배열 만들어서 O,X 값을 배열에 저장해도 된다.
👨💻 3. 정답코드
내가 푼 코드
import java.util.*;
class Solution {
public String[] solution(String[] quiz) {
ArrayList<String> answer = new ArrayList<>();
for(int i = 0; i < quiz.length; i++) {
// 공백 기준으로 수식 분리
String [] splited = quiz[i].split(" ");
int x = Integer.parseInt(splited[0]);
String op = splited[1];
int y = Integer.parseInt(splited[2]);
int result = Integer.parseInt(splited[4]);
int calculated = 0;
if (op.equals("+")) {
calculated = x + y;
} else if (op.equals("-")) {
calculated = x - y;
}
// 비교 결과
answer.add((calculated == result) ? "O" : "X");
}
return answer.toArray(new String[0]);
}
}
처음에는 문제를 대충 읽고, "정답이 맞는 경우에만 'O'를 추가하는 방식"이라고 착각해서 가변 배열인 ArrayList를 사용해야 한다고 생각했다.하지만 곰곰이 생각해보니 O와 X는 quiz.length 만큼 항상 정해진 개수로 나오기 때문에, 고정된 길이의 String[] 배열로 처리하는 게 더 간단하고 효율적이다.
또한 ArrayList<String>을 String[] 배열로 변환할 때는 다음과 같이 toArray()를 쓴다:
answer.toArray(new String[0]);
여기서 new String[0]은 단순히 리턴 타입을 지정하기 위한 형식일 뿐, 0이라는 값 자체에는 특별한 의미는 없다. Java는 내부적으로 ArrayList의 크기를 보고 새로운 배열을 만들어 채운다. toArray(new String[answer.size()])도 동작하지만,
new String[0]을 넘기면 JDK가 자동으로 최적화해서 새 배열을 만들어 주는 것이다.
배열로 푼 코드
import java.util.*;
class Solution {
public String[] solution(String[] quiz) {
String[] answer = new String[quiz.length];
for (int i = 0; i < quiz.length; i++) {
// 수식을 공백 기준으로 분리
String[] parts = quiz[i].split(" ");
int x = Integer.parseInt(parts[0]);
String op = parts[1];
int y = Integer.parseInt(parts[2]);
int result = Integer.parseInt(parts[4]);
int calculated = 0;
if (op.equals("+")) {
calculated = x + y;
} else if (op.equals("-")) {
calculated = x - y;
}
// 비교 결과에 따라 O 또는 X 저장
answer[i] = (calculated == result) ? "O" : "X";
}
return answer;
}
}
👏🏻 4. 좋아요 가장 많이 받은 코드
이렇게 간단하게 쓸 수 있다니...
class Solution {
public String[] solution(String[] quiz) {
for(int i=0; i<quiz.length; i++){
String[] text = quiz[i].split(" ");
int result = Integer.parseInt(text[0]) + ( Integer.parseInt(text[2]) * ( text[1].equals("+") ? 1:-1) );
quiz[i] = result == Integer.parseInt(text[4])? "O": "X";
}
return quiz;
}
}
'코딩테스트 > JAVA테스트' 카테고리의 다른 글
[프로그래머스] (Java) A로 B 만들기 (6) | 2025.05.23 |
---|---|
[프로그래머스] (Java) 최댓값 만들기(2) (2) | 2025.05.23 |
[프로그래머스] (Java) 문자열 정렬하기 (2) (5) | 2025.05.22 |
[Java] 코딩테스트용 주요 함수/알고리즘 모음 (2) (1) | 2025.05.22 |
[Java] 코딩테스트용 주요 함수/알고리즘 모음 (1) (4) | 2025.05.22 |
📑 1. 문제설명


💡 2. 풀이과정
결과값 담을 ArrayList<String> answer 선언 *- 받은 String[] quiz를 공백 기준으로 분리해서 String[] splited에 담기 -
quiz[i].split(" ")
- String 타입의 배열 splited에 들어 있는 피연산자(x,y)와 결과값은 문자열을 숫자로 형변환 -
Integer.parseInt
- 연산자가 +인 경우와 -인 경우 나눠서 연산 수행하고 결과를 calculated 변수에 저장
- caculated 값과 result 값을 비교해서 같으면 "O", 틀리면 "X"를 ArrayList에 추가
ArrayList를 Array로 변환해서 return
다 풀고 나서 생각 해 보니 1,6은 필요 없음
반환할 배열의 길이가 정해져 있으므로 그냥 quiz의 길이 만큼 일반 배열 만들어서 O,X 값을 배열에 저장해도 된다.
👨💻 3. 정답코드
내가 푼 코드
import java.util.*; class Solution { public String[] solution(String[] quiz) { ArrayList<String> answer = new ArrayList<>(); for(int i = 0; i < quiz.length; i++) { // 공백 기준으로 수식 분리 String [] splited = quiz[i].split(" "); int x = Integer.parseInt(splited[0]); String op = splited[1]; int y = Integer.parseInt(splited[2]); int result = Integer.parseInt(splited[4]); int calculated = 0; if (op.equals("+")) { calculated = x + y; } else if (op.equals("-")) { calculated = x - y; } // 비교 결과 answer.add((calculated == result) ? "O" : "X"); } return answer.toArray(new String[0]); } }
처음에는 문제를 대충 읽고, "정답이 맞는 경우에만 'O'를 추가하는 방식"이라고 착각해서 가변 배열인 ArrayList를 사용해야 한다고 생각했다.하지만 곰곰이 생각해보니 O와 X는 quiz.length 만큼 항상 정해진 개수로 나오기 때문에, 고정된 길이의 String[] 배열로 처리하는 게 더 간단하고 효율적이다.
또한 ArrayList<String>을 String[] 배열로 변환할 때는 다음과 같이 toArray()를 쓴다:
answer.toArray(new String[0]);
여기서 new String[0]은 단순히 리턴 타입을 지정하기 위한 형식일 뿐, 0이라는 값 자체에는 특별한 의미는 없다. Java는 내부적으로 ArrayList의 크기를 보고 새로운 배열을 만들어 채운다. toArray(new String[answer.size()])도 동작하지만,
new String[0]을 넘기면 JDK가 자동으로 최적화해서 새 배열을 만들어 주는 것이다.
배열로 푼 코드
import java.util.*; class Solution { public String[] solution(String[] quiz) { String[] answer = new String[quiz.length]; for (int i = 0; i < quiz.length; i++) { // 수식을 공백 기준으로 분리 String[] parts = quiz[i].split(" "); int x = Integer.parseInt(parts[0]); String op = parts[1]; int y = Integer.parseInt(parts[2]); int result = Integer.parseInt(parts[4]); int calculated = 0; if (op.equals("+")) { calculated = x + y; } else if (op.equals("-")) { calculated = x - y; } // 비교 결과에 따라 O 또는 X 저장 answer[i] = (calculated == result) ? "O" : "X"; } return answer; } }
👏🏻 4. 좋아요 가장 많이 받은 코드
이렇게 간단하게 쓸 수 있다니...
class Solution { public String[] solution(String[] quiz) { for(int i=0; i<quiz.length; i++){ String[] text = quiz[i].split(" "); int result = Integer.parseInt(text[0]) + ( Integer.parseInt(text[2]) * ( text[1].equals("+") ? 1:-1) ); quiz[i] = result == Integer.parseInt(text[4])? "O": "X"; } return quiz; } }
'코딩테스트 > JAVA테스트' 카테고리의 다른 글
[프로그래머스] (Java) A로 B 만들기 (6) | 2025.05.23 |
---|---|
[프로그래머스] (Java) 최댓값 만들기(2) (2) | 2025.05.23 |
[프로그래머스] (Java) 문자열 정렬하기 (2) (5) | 2025.05.22 |
[Java] 코딩테스트용 주요 함수/알고리즘 모음 (2) (1) | 2025.05.22 |
[Java] 코딩테스트용 주요 함수/알고리즘 모음 (1) (4) | 2025.05.22 |