카테고리 없음
개인개발_TIL_10일차(코딩 테스트 - 약수 구하기)
티-히히
2025. 3. 11. 15:12
- 오전
- 수영 강습
- 오후
- 코딩테스트
- 포트폴리오 정리
- 저녁
- 한달 인턴 신청서 제출
코딩 테스트 - 약수 구하기
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120897
정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
n | result |
24 | [1, 2, 3, 4, 6, 8, 12, 24] |
29 | [1, 29] |
내가 쓴 코드
using System;
using System.Collections.Generic;
public int[] solution(int n)
{
//int[]는 동적으로 배열을 바꿀 수 없기 떄문에 List<int>를 선언한다.
List<int> listAnswer = new List<int>();
//1에서부터 n과 똑같은 수까지 반복한다. n을 나누었을 때 딱 떨어지는 수가 걸리면 그 수를 List에 넣어준다.
for (int i = 1; i <= n; i++)
{
if (n % i == 0)
{
listAnswer.Add(i);
}
}
//List를 배열로 바꿔준다.
return listAnswer.ToArray() ;
}
1. int[]는 동적으로 배열을 바꿀 수 없기 떄문에 List<int>를 선언한다.
(List를 쓰려면 using에 using System.Collections.Generic; 를 추가해야한다.)
2. 1에서부터 n과 똑같은 수까지 반복한다. n을 나누었을 때 딱 떨어지는 수가 걸리면 그 수를 List에 넣어준다.
3. List를 배열로 바꿔준다.
다른 사람의 코드
using System;
using System.Linq;
public class Solution {
public int[] solution(int n) {
int[] answer = Enumerable.Range(1, n).Where(x => n % x == 0).ToArray();
return answer;
}
}
이 분은 List와 for가 아닌 Linq를 썼다.
Linq는 가독성면에서는 좋지만 성능면에서 떨어진다.
SQL을 쓰던 나로썬 이게 더 익숙하고 보기 좋았다.
하지만 for문을 많이 쓰도록 연습하는게 성능면에선 더 좋을 것 같다.
1. Enumerable.Range(1, n) - 1부터 n까지 반복한다.
2. Where(x => n % x == 0) - n이 딱 나누어 떨어지는 수까지.
3. ToArray(); - 배열로 바꿔준다.