TIL)2022-11-22(java)
java 알고리즘 문제 풀이
java 문법
- int[] strings = Arrays.copyOfRange(array, a, b);
배열의 a~b까지의 범위만 복사해서 넣음
오류(?)
에러(?) : 알고리즘 문제 풀이 후 코딩테스트 출력크기초과 에러 메세지
해결 : 디버깅을위해 썼던 print문 제거
알고리즘 문제 모의고사
1번 문제
생각할 점)
//배열에 모든 달의 일수를 적어준다
// 입력받은 달까지 모두 더하기
// 더한값에 일수 + 98 더하기
//12월이 지나 다음년이 됐을 경우 생각
코드설명 )
6 -> 배열에 모든 달의 일수를 적어준다/ 1월부터 시작한다고 가정하면 일수를 더할 필요가 없기 떄문에 맨 앞에 0
10~12 -> 입력받은 달까지의 일수를 모두 더해준다
14 -> 더한값에 입력받은 일수와 98을 더해준다
16~18-> 만약 더한값이 365보다 크다면 1년이 지난 경우이기 때문에 365를 빼준다
19~22 -> 더한값이 가장 적은 일수인 29일보다 큰경우 더한값에서 차례대로 - 일수, -한만큼 count++를 통해 달 알아내기
3번 문제
생각할 점)
// 공백별로 문자 나눠서 배열에 저장
// 각 수가 소수인지 판별
// 소수라면 그중 가장 큰수
// 아니라면 그중 가장 작은수
코드설명 )
5-> 최대값 판별을 위해 변수에 0저장
6-> 최소값 판별을 위해 변수에 큰 값 저장
9 -> 문자를 띄어스기별로 나누어 배열에 저장
13~17-> 소수 판별 메소드를 이용하여 소수가 맞으면 max리스트에 저장, 아니라면 min리스트에 저장
19~23 -> 최대값이 max 리스트의 값보다 작으면 최대값에 리스트 값 넣어주면서 최대값 판별
24~28 -> 위처럼 최소값 판별
32~41 -> 소수 판별을 위한 메소드 정이
35~37 -> 입력받은 수에서 2~입력받은수-1 로 나눴을 때 나머지가 0인경우는 소수가 아니므로 false 리턴 후 break, 반대의 경우 true 리턴
잘한점 : 이전에 배운 내용을 활용하여 문제를 잘 풀었다.
아쉬운점 : 모의고사 3번 문제를 풀 때 collections를 사용하면 쉽게 풀수 있는 문제였는데 알고있는 문법임에도 생각이 나지 않아 작성을 하지 못했다? 아예 collections을 사용할 생각조차 안했음
다음부턴 문제를 풀고 불필요한 코드들을 줄이자.
내일 목표 : Challenge문제 35번까지 풀기