본문 바로가기
코테 준비(with 프로그래머스)

프로그래머스 day3 - 더 크게 합치기, 두 수의 연산값 비교하기

by jeong11 2023. 10. 25.
반응형

문제를 잘못 이해했거나 간단한데 어떻게 풀어야 할 지 생각나지 않는 문제들이 많았다

 

1. 더 크게 합치기

문제 설명

연산 정수에 대한 연산으로 정수를 붙여서 값을 반환합니다. 예를 들면 다음과 같습니다.

  • 12 ⊕ 3 = 123
  • 3 ⊕ 12 = 312

양의 정수 a b 주어졌을 , a ⊕ b b ⊕ a 값을 return 하는 solution 함수를 완성해 주세요.

, a ⊕ b b ⊕ a 같다면 a ⊕ b return 합니다.

입출력 예
a b result
9 91 991
89 8 898

 

java로 풀이하려고 했을때 나오는 기본 코드는 다음과 같다

class Solution {
    public int Solution(int a, int b) {
        int answer = 0;
        return answer;
    }
}

int answer로 return 해줘야해서 어떻게 해야할지 고민하다가 아래와 같이 풀어보았다

 

*내가 해결한 방식 :String.valueOf()로 바꿔줬다 => 해결

class Solution {
    public int Solution(int a, int b) {
        int answer = 0;

        String tmp1 = String.valuesOf(a)+String.valuesOf(b);
        String tmp2 = String.valuesOf(b)+String.valuesOf(a);

        //if(tmp1>tmp2 || tmp1==tmp2){ => 이렇게 하면 에러 발생
        if(Integer.parseInt(tmp1) > Integer.parseInt(tmp2) || 
           Integer.parseInt(tmp1) == Integer.parseInt(tmp2) {
            answer=Integer.parseInt(tmp1);
        } else {
            answer=Integer.parseInt(tmp2);
        }

        return answer;
        }
}

 

그런데 코드가 너무 지저분하고 복잡한것 같아 좀 더 보기 편하게 수정해보기로 했다!! 

class Solution {
    public int Solution(int a, int b) {
        int answer = 0;

        //아예 tmp1, tmp2 선언때부터 parseInt 해주기
        String tmp1 = Integer.parseInt(String.valuesOf(a)+String.valuesOf(b));
        String tmp2 = Integer.parseInt(String.valuesOf(b)+String.valuesOf(a));

        //이렇게 변경하면 뒤에 매번 Integer.parseInt() 해주지 않아도 된다
        if(tmp1 > tmp2 || tmp1 == tmp2) {
            answer=tmp1;
        } else {
            answer=tmp2;
        }

        return answer;
	}
}

코드가 매우 깔끔해졌다! 정답 제출 완료

 


 

2. 두 수의 연산값 비교하기

문제 설명

문제 설명

연산 정수에 대한 연산으로 정수를 붙여서 값을 반환합니다. 예를 들면 다음과 같습니다.

 

12 ⊕ 3 = 123

3 ⊕ 12 = 312

양의 정수 a b 주어졌을 , a ⊕ b b ⊕ a 값을 return 하는 solution 함수를 완성해 주세요.

 

, a ⊕ b b ⊕ a 같다면 a ⊕ b return 합니다.

입출력 예
a b result
2 91 364
91 2 912

이 문제도 1번과 같은 방식으로 풀면 되는 문제라 한 포스팅에 넣었다

 

java로 풀이하려고 했을때 나오는 기본 코드는 다음과 같다

class Solution {
    public int Solution(int a, int b) {
        int answer = 0;
        return answer;
    }
}

 

*내가 해결한 풀이 => 정답 완료

class Solution {
    public int Solution(int a, int b) {
        int answer = 0;
        String tmp1 = Integer.parseInt(String.valueOf(a)+String.valueOf(b))
        String tmp2 = Integer.parseInt(String.valueOf(2*a*b))
        
        if(tmp1 > tmp2 || tmp1 == tmp2){
        	answer=tmp1
        } else {
        	answer=tmp2
        }   
        return answer;
    }
}

 

*알아두어야 할 내용 

Integer.parseInt() : 문자열(String)을 숫자(int)로 변환시키는 방법

String.valueOf(): object 값을 String으로 변환시키는 방법, 파라미터가 null이면 문자열 "null"을 만들어서 반환한다

.toString() : String.valueOf()처럼 값을 String으로 변환시키지만 파라미터가 null인 경우 Null PointerException을 발생시킨다

 

 

반응형