개발자도전
[프로그래머스] 가까운 수 본문
728x90
[문제]
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 1 ≤ array의 원소 ≤ 100
- 1 ≤ n ≤ 100
- 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
[입출력 예]
| array | n | result |
| [3,10,28] | 20 | 28 |
| [10,11,12] | 13 | 12 |
입출력 예 #1
- 3, 10, 28 중 20과 가장 가까운 수는 28입니다.
입출력 예 #2
- 10, 11, 12 중 13과 가장 가까운 수는 12입니다.
[답]
풀이 1.

처음에 temp1이라는 변수를 선언해 0번째 인덱스의 값에서 n을 뺀 값의 절대값을 저장해주었다.
후에 1번 인덱스 부터 for문을 돌려 temp2를 똑같이 구해주었다.
그래서 temp1의 값이 temp2 보다 크다면 temp2의 값이 더 작다는 뜻이니 temp1에 값을 대입시켜준 후 answer에 i번재 인덱스 값을 대입시켜주었다.
이렇게 문제를 계속 풀던 도중 2개의 테스트에서 계속 실패가 떴는데 아마 값이 중복되는 경우에 의해서 실패가 떴던거 같아 else if문에 조건을 적어서 값을 대입해 주었다.
그러나 중복되는 코드도 있고 코드 가독성도 좋지 않아 다시 코드를 작성해보았다.
풀이 2.

문제에 제한 사항으로 n의 값이 100까지라 min이라는 최소값을 선언해준 후 101값을 대입시켜주었다.
for문을 돌려 temp값이 100보다 작다면 min에 temp값을 대입시켜주고 answer에 i번째 인덱스 값을 대입시켜주었다.
이렇게 코드를 작성해주니 코드도 짧아지고 가독성도 좋아졌다.
728x90
'프로그래머스 코딩 테스트' 카테고리의 다른 글
| [프로그래머스] 암호 해독 (0) | 2023.04.01 |
|---|---|
| [프로그래머스] 369게임 (0) | 2023.04.01 |
| [프로그래머스] 삼각형의 완성 조건 (0) | 2023.04.01 |
| [프로그래머스] 중복된 문자 제거 (0) | 2023.04.01 |
| [프로그래머스] 배열 원소의 길이 (0) | 2023.03.30 |
Comments