728x90
프로그래머스 _ 코딩 기초 트레이닝 DAY 4 - (4)
출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181934
문제 | 문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다. 두 수가 n과 m이라면
- ">", "=" : n >= m
- "<", "=" : n <= m
- ">", "!" : n > m
- "<", "!" : n < m
- 두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
입력 #1 | ineq = "<" eq = "=" n = 20 m = 50
출력 #1 | 1
>> 풀이 <<
처음에 문제를 보고 자료구조 MAP을 이용해 풀까 했지만 간단하게 쓰고싶어서 조건문을 이용해 풀기로 했다. 야심차게 if문과 삼항연산자로 코드를 작성했는데, if문에 들어가지 않았다. 즉 조건이 틀렸다고 인식된 것이다.
고심 끝에 charAt 메소드를 이용해 풀었다.
- 문자 한 개만 받아오기 -> charAt()
- char charAt(int index) 는 문자열의 요소를 문자로 받아주는 메소드이다. index를 넣어 원하는 위치의 char형을 받아올 수 있다.
class Solution {
public int solution(String ineq, String eq, int n, int m) {
int answer = 1;
if (ineq.charAt(0) == '<' && eq.charAt(0) == '=') answer = (n <= m) ? 1 : 0;
else if (ineq.charAt(0) == '<' && eq.charAt(0) == '!') answer = n < m ? 1 : 0;
else if (ineq.charAt(0) == '>' && eq.charAt(0) == '=') answer = n >= m ? 1 : 0;
else if (ineq.charAt(0) == '>' && eq.charAt(0) == '!') answer = n > m ? 1 : 0;
return answer;
}
}
그런데 좀 찜찜해서 찾아보니,, String은 객체라서 == 가 아니라 equals() 메소드를 이용해 비교해야 한다는 걸 잊고 있었다.. 😂 불과 20일 전에 자바 시험범위에 포함되어 있어서 공부했던 부분인데 ,, 꾸준히 공부해야 겠다고 느낀 하루였다.
equals() 메소드를 이용해서 다시 코드를 쓰면 아래처럼 쓸 수 있다.
class Solution {
public int solution(String ineq, String eq, int n, int m) {
int answer = 0;
if (ineq.equals(">") && eq.equals("="))
answer = n >= m ? 1 : 0;
else if (ineq.equals("<") && eq.equals("="))
answer = n <= m ? 1 : 0;
else if (ineq.equals(">") && eq.equals("!"))
answer = n > m ? 1 : 0;
else if (ineq.equals("<") && eq.equals("!"))
answer = n < m ? 1 : 0;
return answer;
}
}
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[프로그래머스] 등차수열의 특정한 항 더하기 (boolean 배열) - JAVA (0) | 2023.07.04 |
---|---|
[프로그래머스] 코드 처리하기 - JAVA (0) | 2023.07.04 |
[프로그래머스] 정수형 문자열로 변환 (int to String, String to int) - JAVA (0) | 2023.07.03 |
[프로그래머스] 문자열 곱하기 - JAVA (0) | 2023.07.02 |
[프로그래머스] 문자 리스트를 문자열로 변환하기 - JAVA (0) | 2023.07.02 |