개발일기/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 적기
개인과제 - 계산기 만들기 다시 해보기
정보처리 산업기사 공부