개발일기/TIL(Since24.04.19)

Java - TIL(24.05.10 금)

w.llama 2024. 5. 10. 21:10

오늘 한 일

  • 내일배움캠프
    • 팀과제 발표
    • KPT작성
  • 프로그래머스 문풀
    • 정수 제곱근 판별(java)
    • 흉부외과 또는 일반외과 의사 목록 출력하기 (SQL)
  • HyperSkill 문풀
  • 방송대 인공지능 수강

궁금한 문제

Solution

처음에 아래와 같이 프로그램을 짯었는데 ,테스트 2,4,7,10,11,12,14에서 시간초과로 실패하였다.

 
class Solution {
    public long solution(long n) {
        long answer = 0;
        for(int i=0; i*i<=n; i++){
            if(Math.pow(i,2)==n){
                answer=(long)Math.pow(i+1,2);
            }else
                answer=-1;
        }
        return answer;
    }
}

그래서 코드를 아래와 같이 변경했더니 통과를했다.

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

        if(n==(long)Math.pow(answer,2)){
            answer =(long)Math.pow(answer+1,2);
        }else{
            answer=-1;
        }
        return answer;
    }
}

반복문을 사용하여 1부터 하나씩 늘려가며 확인하는 것보다 역으로 제곱근을 바로 구하게 되면 시간소비가 적어 더 효율적인 코드를 작성할 수 있다. 코드를 작성할때 효율적인 방법을 생각하지 않았었는데. 한번 작성하고 더 효율적인 코드가 없는지 한번 더 생각해보며 작성해야겠다. 

내일 할 일

WIL 적기 

개인과제 - 계산기 만들기 다시 해보기

정보처리 산업기사 공부