성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] 조건문자열 - JAVA

와나나나 2023. 7. 3. 14:35
728x90

프로그래머스 _ 코딩 기초 트레이닝 DAY 4 - (4)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181934

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 |  문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다. 두 수가 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;
    }
}