enoch012 / JavaBasicStudy

Java 기초 스터디 (2023.09 ~ 10)
0 stars 1 forks source link

10월 22일 / 코딩테스트 연습 (chanmi) #23

Open enoch012 opened 1 year ago

enoch012 commented 1 year ago

정수 제곱근 판별

문제

제한사항

입출력 예

n | return -- | -- 121 | 144 3 | -1

문제풀이

class Solution {
    public long solution(long num) {
        long answer = -1;
        long sqrNum = 1;

        while(sqrNum * sqrNum <= num){
            if(sqrNum * sqrNum == num){
                sqrNum += 1;
                answer = sqrNum * sqrNum;
            } else sqrNum++;
        }

        return answer;
    }
}

image

회고

// api를 사용한 풀이
class Solution {
  public long solution(long n) {
      if (Math.pow((int)Math.sqrt(n), 2) == n) {
            return (long) Math.pow(Math.sqrt(n) + 1, 2);
        }
        return -1;
  }
}
enoch012 commented 1 year ago

정수 내림차순으로 배치하기

문제

제한사항

입출력 예

n | return -- | -- 118372 | 873211

문제풀이

class Solution {
    public long solution(long n) {
        long answer = 0;

        String answerStr = "";

        String strN = Long.toString(n); // 문자열 변환
        String[] strArr = strN.split(""); // 한 글자씩 분리하여 배열 생성

        for(int i = 1; i < strArr.length; i++){
            for(int j = 0; j < strArr.length - 1; j++){
                String num1 = strArr[j];
                String num2 = strArr[i];

                if(!compareNum(num1, num2)){
                    // strArr[i]가 strArr[i-1] 보다 큰 경우 위치를 바꿔준다.
                    strArr[j] = num2;
                    strArr[i] = num1;
                }
            }
        }

        // 배열을 문자열로 만든다
        for(String strNum : strArr){
            answerStr += strNum;
        }

        answer = Long.parseLong(answerStr); // 문자열을 long 형태로 다시 형변환
        return answer;
    }

    // 두 개의 문자열 형태의 숫자를 비교하는 함수
    boolean compareNum(String num1, String num2){
        return Integer.valueOf(num1) >= Integer.valueOf(num2) ? true : false;
    }

}

image

회고