[Java] 더 크게 합치기

peace w·2023년 9월 26일
0

프로그래머스

목록 보기
6/25

문제

  • 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
    12 ⊕ 3 = 123
    3 ⊕ 12 = 312

  • 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.

  • 단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.

  • 제한사항
    1 ≤ a, b < 10,000

입출력 예

문제풀이

  • ⊕같은 이상한 기호를 봐도 당황하지 말자. 시키는 대로 계산해라.
  • ⊕는 int 정수를 더하는 것이 아니다. int 정수를 string 으로 변환하여 더한 후 다시 int를 반환하자.
  • "a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다." 를 빼먹지 말자. 주어진 조건을 다 구현해보자. (제한사항은 숙련되고 나면 추가하겠다.)
class Solution {
    public int solution(int a, int b) {
        int answer = 0;
        String ab = String.valueOf(a) + String.valueOf(b);
        String ba = String.valueOf(b) + String.valueOf(a);
        int c = Integer.parseInt(ab);
        int d = Integer.parseInt(ba);
        
        if (c >= d) {
            return c;
        } else {
            return d;
        }
    }
}

작성하고 난 다음엔 깔끔하다고 생각했는데 다른 사람들 코드를 보니까 길고 장황하다고 느껴졌다.

int 를 String 으로 변환하기

1. String.valueOf()

java.lang.String 클래스의 valueOf() 메소드를 이용한다.
나는 String.valueOf() 를 사용했다.
int 값을 입력받고 변환한 String 을 반환한다.

2. Integer.toString()

java.lang.Integer 클래스의 toString() 메소드를 이용할 수도 있다.

		int a = 1;
        int b = 2;
        String ab = Integer.toString(a) + Integer.toString(b);
        String ba = Integer.toString(b) + Integer.toString(a);
        
        System.out.println(ab);  // 12
        System.out.println(ba);  // 21

3. int + ""

다른 사람들의 코드를 구경해보다가 엄청 간단한 방법을 발견했다.
int 숫자에 ""을 더하면 String 이 된다.
이유는 문자열에 int를 이어붙이면 문자열로 반환되기 때문이다.

int + ""

class Solution {
    public int solution(int a, int b) {
        int answer = 0;
        int ab = Integer.parseInt(a + "" + b);
        int ba = Integer.parseInt(b + "" + a);
 		...
    }
}

이렇게 코드를 줄일 수도 있다.

String 을 int 로 변환하기

1. Integer.parseInt()

java.lang.Integer 클래스의 parseInt() 메소드이다.
String 값을 입력받고 변환한 int 을 반환한다.
나는 이것을 사용했다.

2. Integer.valueOf()

java.lang.Integer 클래스의 Integer.valueOf() 메소드이다.

둘의 차이점은 추후에 기술하도록 하겠다.

삼항 연산자

if 를 사용한 조건문도

answer = c >= d ? c : d; 
return answer;

으로 간단하게 대체할 수 있다.

(조건 A) ? B : C;
연산자를 세 개 가지기 때문에 삼항 연산자이다.

A는 조건이며 true 또는 false라는 값을 가진다. true 이면 B를 false 이면 C를 실행한다.
삼항연산자는 위처럼 true 또는 false로 나뉠 때, if 문 보다 더 짧게 쓸 수 있다.

아직은 if 문이 보기 편하고 가독성이 좋다고 느끼는데, 배우고 있는 중이라 그렇게 여기는 건지 아니면 다른 사람들도 그렇게 생각하는지 궁금하다.

※ 삼항 연산자를 사용하여 코드를 줄였다고 해서 컴파일 속도가 빨라지지는 않는다.

profile
더 성장하자.

0개의 댓글