문제
❔ 문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다. 두 수가 n과 m이라면 ">", "=" : n >= m "<", "=" : n <= m ">", "!" : n > m "<", "!" : n < m 두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요. |
문제접근
✅ 해당 문제를 처음 보았을 때 나는 최대한 내 손을 덜 쓰고 싶었다.
&& 이나 || 등을 쓸 수도 있지만 ineq와 eq를 합쳐버리면 더 편할거라 생각했다.
compareNum이라는 변수를 추가하고 equals를 이용하여 문자열을 비교해준다.
처음엔 뭣모르고 compareNum= ">=" 를 썼는데 문자열은 이렇게 비교하면 안된다고 한다.
문자열 비교 문법
___.equals(" ")
✅ 다음과 같은 문법을 사용해줘야한다. 해당 값이 null 값인 경우 NullPointerException 이 발생한다. 예외 처리가 싫다면 Objects.equals()을 사용하면 된다. 대소문자 구별없이 문자 자체로만 비교하고 싶으면 equalsIgnoreCase()을 사용하자!
내가 제출한 답
class Solution {
public int solution(String ineq, String eq, int n, int m) {
int answer = 0;
String compareNum = ineq + eq;
if (compareNum.equals(">=")) {
answer = n >= m ? 1 : 0;
} else if (compareNum.equals("<=")) {
answer = n <= m ? 1 : 0;
} else if (compareNum.equals(">!")) {
answer = n > m ? 1 : 0;
} else if (compareNum.equals("<!")) {
answer = n < m ? 1 : 0;
}
return answer;
}
}
여기서 코드를 더 줄일 수 있다.
answer을 boolean타입으로 선언하면 삼항연산자를 한번만 적어줘도 된다.
class Solution {
public int solution(String ineq, String eq, int n, int m) {
Boolean answer = false; // 초기값은 false
String compareNum = ineq + eq; // 부등호와 등호를 결합하여 비교 문자열 생성
if (compareNum.equals(">=")) {
answer = n >= m; // n이 m보다 크거나 같으면 true
} else if (compareNum.equals("<=")) {
answer = n <= m; // n이 m보다 작거나 같으면 true
} else if (compareNum.equals(">!")) {
answer = n > m ; // n이 m보다 크면 true
} else {
answer = n < m; // n이 m보다 작으면 true
}
// answer 값이 true이면 1 반환, false이면 0 반환
return answer ? 1 : 0;
}
}
요즘은 학원에서 파이썬을 배우고 있다. 프로그래머스의 장점은 쉽게 다른 사람들의 풀이를 볼 수 있다는 점이다.
파이썬 공부에 많은 시간을 투자하고 싶지 않지만 깔짝거리고 싶을 때 파이썬 정답 코드를 본다.
어느정도 코드를 읽을 수 있으니까 ! 도움이 된다 !
파이썬 답안
def solution(ineq, eq, n, m):
return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))
역시 파이썬은 짧은 코드로 해결 가능하다.
'문제풀기 > 프로그래머스 문풀' 카테고리의 다른 글
[프로그래머스] 단순구현 (0) | 2023.10.03 |
---|---|
[프로그래머스0] 배열 자바 (0) | 2023.09.18 |
[프로그래머스] 2차원배열, 구간쿼리 (0) | 2023.09.05 |
[문자열 붙이기] arr 배열을 이용해 풀기, join, spilt (0) | 2023.07.11 |
[프로그래머스, 자바] 문자열 돌리기, toCharArray(), charAT(i) (0) | 2023.07.03 |