코딩테스트 회고록/코테_Java

[JAVA] 프로그래머스 - 가까운 수

2023. 3. 11. 00:24
목차
  1. ❓ 문제 설명
  2. ⚠️ 제한 사항 및 입출력 예시
  3. 🔍 알고리즘 구상
  4. ✏️ 직접 구현한 코드
  5. 🗣️ 코드 설명
  6. 💦 어려웠던 점

프로그래머스 코딩테스트 문제 입문단계 '가까운 수' 문제입니다.

https://school.programmers.co.kr/learn/courses/30/lessons/120890

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


❓ 문제 설명

정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

 

※ 아래 입출력 예시를 참고하세요!


⚠️ 제한 사항 및 입출력 예시

  • 1 <= array의 길이 <= 100
  • 1 <= array의 원소 <= 100
  • 1 <= n <= 100
  • 가장 가까운 수가 여러 개일 경우 더작은 수를 return 합니다.

 

입출력 예시 ▼

입력 (array, n)

[3, 10, 28]  /  20

출력 (return 값)

28
// 3, 10, 28 중 20과 가장 가까운 수는 28입니다.

🔍 알고리즘 구상

  • array배열의 값과 n의 차를 구한다.
  • 그 차의 절댓값을 구해 절댓값으로 가장 n과 가까운 수를 찾는다.
  • 만약 차의 절댓값이 같은 수이면 더 작은 수를 저장한다.

절댓값을 찾는 Math 클래스의 abs() 메서드를 이용할 것입니다!


✏️ 직접 구현한 코드

import java.lang.Math;

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        int diff = 100;
        for(int i = 0; i < array.length; i++) {
            if(diff > Math.abs(n-array[i])) {
                answer = array[i];
                diff = Math.abs(n-array[i]);
            }
            if(diff == Math.abs(n-array[i])) {
                answer = answer > array[i]? array[i]: answer;
            }
        }
        return answer;
    }
}

🗣️ 코드 설명

  • abs() 메서드를 사용할 때 이용할 Math클래스를 import 했습니다.
  • n과 가장 가까운 수를 저장할 answer과 n과 array배열의 차의 절댓값을 담을 diff를 생성했습니다. 이때, 제한사항에서 가장 큰 수인 100으로 초기화 후 생성했습니다.
  • i가 array배열의 크기만큼 증가하며 반복하는 for문 안에서, if문을 이용하여 가장 n과 차이가 적은 array배열의 값을 answer에 저장했습니다. 만약 n과의 차이가 같다면, 삼항 연산자를 이용해 더 작은 수를 answer에 저장하도록 했습니다.

💦 어려웠던 점

n과 array배열의 차의 절댓값을 구할 때, Math 클래스에 들어있는 abs() 메서드를 이용할 때 어려움이 있었다. Math 클래스에 들어있으므로 Math.abs() 이러한 식으로 써야하지만, 앞에 Math.를 쓰지 않고 계산하려해서 계속 에러가 났다. 다른 클래스에 있는 메서드를 import해서 쓸 때 더욱 주의해야겠다!!!

'코딩테스트 회고록 > 코테_Java' 카테고리의 다른 글

[JAVA] 프로그래머스 - 7의 개수  (0) 2023.03.20
[JAVA] 프로그래머스 - 합성수 찾기  (0) 2023.03.17
[JAVA] 프로그래머스 - 배열 회전시키기  (0) 2023.03.07
[JAVA] 학교 수행평가 코딩테스트 - 문자열을 입력 받아 거꾸로 출력하기  (0) 2023.03.06
[JAVA] 학교 수행평가 코딩테스트 - 정수 5개를 배열에 저장하고 평균 출력하기  (0) 2023.03.04
  1. ❓ 문제 설명
  2. ⚠️ 제한 사항 및 입출력 예시
  3. 🔍 알고리즘 구상
  4. ✏️ 직접 구현한 코드
  5. 🗣️ 코드 설명
  6. 💦 어려웠던 점
'코딩테스트 회고록/코테_Java' 카테고리의 다른 글
  • [JAVA] 프로그래머스 - 7의 개수
  • [JAVA] 프로그래머스 - 합성수 찾기
  • [JAVA] 프로그래머스 - 배열 회전시키기
  • [JAVA] 학교 수행평가 코딩테스트 - 문자열을 입력 받아 거꾸로 출력하기
iamjisu
iamjisu
글 솜씨는 없지만 한 글자 한 글자 정성을 다해, 새롭게 배운 것을 정리하고 공부하는 코딩 성장 일기!!
iamjisu
지수의 코딩 발자국
iamjisu
전체
오늘
어제
github 링크
  • 카테고리
    • 개념정리
      • CS
      • MySQL
      • JavaScript
      • Kotlin
      • Java
      • NodeJS
      • Android
    • 코딩테스트 회고록
      • 코테_Java
      • 코테_C언어
    • 오류해결

최근 글

최근 댓글

hELLO · Designed By 정상우.
iamjisu
[JAVA] 프로그래머스 - 가까운 수
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.