※ 본 포스팅은 프로그래머스에 있는 연습문제 풀었던 내역을 아카이빙하기 위해 작성했습니다.
작성자의 공부를 목적으로 작성된 포스팅입니다.
이 포스팅은 방법을 제시한다기보다 제가 어떤 어려움을 겪었는지를 기록하는 목적으로 작성되었습니다.
class Solution {
public int[] solution(int n) {
int count = 0;
for(int i = 1 ;i<=n;i++){
if(n%i==0) count++;
}
int[] answer = new int[count];
// 현재까지 완료한 것, answer를 약수의 갯수만큼 배열을 만들어서 초기화 했다.
// 할 일
// answer의 각 항에 약수를 최소값부터 차례차례대로 대입한다.
// 예를 들자면 answer[0] 에는 1번째 약수인 1을
// answer[1] 에는 2번째 약수인 2를
// answer[2] 에는 3번째 약수인 3을
// answer[3] 에는 4번째 약수인 4를
// ...
// answer[count-1] 에는 count 번째 약수인 24를
for (int i=0; i<count; i++){
for ( int j = 1; j <= n; j++){
if(n%j==0){
answer[i]=j;
}
}
}
return answer;
}
}
간결한 코드라고 생각했었는데
정답이 1,1,1,1,1,1,1 혹은 24,24,24,24,24,24
이렇게밖에 출력이 안되어서 무엇이 문제인지를 테스트하다가
for (int i=0; i<count; i++){
for ( int j = 1; j <= n; j++){
if(n%j==0){
answer[i]=j;
i++; // 아 부분을 추가했습니다.
}
}
}
이렇게 강제적으로 i++를 해주니 제대로 빠져나와서 1,2,3,4,6 이런 식으로 연산이 되는 모습을 확인할 수 있었다.
이 경우에서는 break나 continue를 사용해도 1,1,1,1,1,1,1 혹은 24,24,24,24,24,24 리턴이 되어서 상당히 곤란했었다.
break를 사용해서 가장 가까운 반복문이었던 j 를 빠져나오고 i가 진행되는 모습을 상상했었지만 잘 안됐었다.
좀 더 확실하게 공부해야할 내용들이 많다....
'코딩이야기 > 퇴사자 이민재의 개발일지' 카테고리의 다른 글
레시피 정리 사이트 작업일지(1,2,3일차) (0) | 2022.12.28 |
---|---|
[저장용] 내가 쓰려고 모아둔 vsCode 익스텐션/확장팩 모음 (0) | 2022.10.25 |
현재까지 공부한 내용들 점검 및 향후 공부 계획 (0) | 2022.10.24 |
가명) 이민재의 1주차 개발 일지 (0) | 2022.05.22 |