📑 1. 문자열 섞기

💡 1-1. 접근방식
■ 단순히 주어진 변수명 그대로 a + b > b + a 이렇게 비교하면 두 숫자는 정수 덧셈이기 때문에 항상 a + b == b + a가 된다. 문제에서 의도한 것은 숫자를 문자열로 변환하여 연결한 후, 크기를 비교하는 것이다. 올바르게 비교하려면 String.valueOf(a) + b와 String.valueOf(b) + a 를 비교해야 한다.
■ 또 나는 처음에 sb.toString()을 써서 int로 반환하는 실수를 했는데, sb.toString()은 문자열이기 때문에, int 타입을 반환하는 solution 메서드와 타입이 맞지 않는다. 그래서 Integer.parseInt(sb.toString())을 사용하여 변환해야 한다.
틀린 코드
class Solution {
public int solution(int a, int b) {
StringBuilder sb = new StringBuilder();
if(a+b > b+a) {
sb.append(a).append(b);
} else {
sb.append(b).append(a);
}
return sb.toString();
}
}
✅ 1-2. 정답코드
class Solution {
public int solution(int a, int b) {
String ab = String.valueOf(a) + b;
String ba = String.valueOf(b) + a;
return Integer.parseInt(ab.compareTo(ba) > 0 ? ab : ba);
}
}
⭐ String.valueOf(a)
정수 a를 문자열로 변환하는 메서드
⭐ab.compareTo()
두 문자열을 *사전순으로 비교하는 메서드
ab가 ba보다 크면 양수, 작으면 음수, 같으면 0 반환한다.
ab.compareTo(ba) > 0
⭐ 삼항 연산자 복습
if-else의 축약형으로, 조건이 true면 ? 뒤의 값 반환, false면 : 뒤의 값 반환
조건 ? 값1 : 값2
삼항 연산자 (조건이 참이면 값1, 거짓이면 값2 반환)
ab.compareTo(ba) > 0 ? ab : ba
int a = 5, b = 10;
int max = (a > b) ? a : b; // b(10)이 더 크므로 10 반환
System.out.println(max); // 10
📑 2. 두 수의 연산값 비교하기

이 문제는 아주 쉽기 때문에 정답 코드만 올린다.
정답코드 ▼
class Solution {
public int solution(int a, int b) {
String abStr = String.valueOf(a) + b;
int abInt = Integer.parseInt(abStr);
return abInt > 2*a*b ? abInt : 2*a*b;
}
}
'Algorithm > JAVA테스트' 카테고리의 다른 글
[프로그래머스] (Java / 자바 ) 유연근무제 문제풀이 (11) | 2025.02.14 |
---|---|
[프로그래머스] (Java) 오픈채팅방 문제풀이 (2) | 2025.02.11 |
[프로그래머스] (Java) 문자열 섞기 (15) | 2025.02.06 |
[프로그래머스] (Java) 문자열 겹쳐쓰기 (25) | 2025.02.05 |
[프로그래머스] (Java) 요격시스템 문제풀이 (26) | 2025.02.01 |
📑 1. 문자열 섞기

💡 1-1. 접근방식
■ 단순히 주어진 변수명 그대로 a + b > b + a 이렇게 비교하면 두 숫자는 정수 덧셈이기 때문에 항상 a + b == b + a가 된다. 문제에서 의도한 것은 숫자를 문자열로 변환하여 연결한 후, 크기를 비교하는 것이다. 올바르게 비교하려면 String.valueOf(a) + b와 String.valueOf(b) + a 를 비교해야 한다.
■ 또 나는 처음에 sb.toString()을 써서 int로 반환하는 실수를 했는데, sb.toString()은 문자열이기 때문에, int 타입을 반환하는 solution 메서드와 타입이 맞지 않는다. 그래서 Integer.parseInt(sb.toString())을 사용하여 변환해야 한다.
틀린 코드
class Solution { public int solution(int a, int b) { StringBuilder sb = new StringBuilder(); if(a+b > b+a) { sb.append(a).append(b); } else { sb.append(b).append(a); } return sb.toString(); } }
✅ 1-2. 정답코드
class Solution { public int solution(int a, int b) { String ab = String.valueOf(a) + b; String ba = String.valueOf(b) + a; return Integer.parseInt(ab.compareTo(ba) > 0 ? ab : ba); } }
⭐ String.valueOf(a)
정수 a를 문자열로 변환하는 메서드
⭐ab.compareTo()
두 문자열을 *사전순으로 비교하는 메서드
ab가 ba보다 크면 양수, 작으면 음수, 같으면 0 반환한다.
ab.compareTo(ba) > 0
⭐ 삼항 연산자 복습
if-else의 축약형으로, 조건이 true면 ? 뒤의 값 반환, false면 : 뒤의 값 반환
조건 ? 값1 : 값2
삼항 연산자 (조건이 참이면 값1, 거짓이면 값2 반환)
ab.compareTo(ba) > 0 ? ab : ba
int a = 5, b = 10; int max = (a > b) ? a : b; // b(10)이 더 크므로 10 반환 System.out.println(max); // 10
📑 2. 두 수의 연산값 비교하기

이 문제는 아주 쉽기 때문에 정답 코드만 올린다.
정답코드 ▼
class Solution { public int solution(int a, int b) { String abStr = String.valueOf(a) + b; int abInt = Integer.parseInt(abStr); return abInt > 2*a*b ? abInt : 2*a*b; } }
'Algorithm > JAVA테스트' 카테고리의 다른 글
[프로그래머스] (Java / 자바 ) 유연근무제 문제풀이 (11) | 2025.02.14 |
---|---|
[프로그래머스] (Java) 오픈채팅방 문제풀이 (2) | 2025.02.11 |
[프로그래머스] (Java) 문자열 섞기 (15) | 2025.02.06 |
[프로그래머스] (Java) 문자열 겹쳐쓰기 (25) | 2025.02.05 |
[프로그래머스] (Java) 요격시스템 문제풀이 (26) | 2025.02.01 |