프로그래머스_나머지가 1이 되는 수 찾기 JAVA

2025. 1. 15. 12:52·알고리즘/알고리즘 풀이
반응형

커리큘럼 중 1번

아니 원래 커리큘럼에 대한 문제가 5개씩 밖에 없어 적은 느낌이라

10개씩 추천해달라 했는데 어메나 기존 데이터를 싹 날려서;;

다시 추천해줬다. 

그래서 새로운 마음으로 다시 시작하는 1번! 

'나머지가 1이 되는 수 찾기'다.

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

이 문제도 역시 풀어봤던 문제다.

예전 코드를 보는데;;

정말 총체적 난국이라 생각했다.

 

과거 코드

class Solution {
    public int solution(int n) {

        boolean isEven = n % 2 == 0 ? true : false;

        if(isEven) {
            for(int i = 1; i < n; i+=2) {
                if(n % i == 1) return i;
            }
        } else {
            for(int i = 2; i < n; i+=2) {
                if(n % i == 1) return i;
            }
        }


        return -1;
    }
}

짝수인지 홀수인지를 찾아내서 어쩌구 저쩌구 한 것 같은데....;;;;;;;;;;;;;

사실 왜 저렇게 짰는지 도저히 이해할 수 없는 코드다.

뭐 그때의 머리와 경험으로는 저게 최선이었겠지 싶다.

 

지금의 머리로 다시 생각해봤다.

좀 많이 고민했다. 뭔가의 규칙이 있을 거 같아 입출력 예를 보면서 

다양한 방식으로 계산해봤다.

산수도 잘 못해서 종이 없으면 생각 불가~

제일 먼저 입출력의 n이 10일때를 가정해서 나온 결과 값을 봤다.

결과 값은  3인데.. 뭔가 10에 -1을하고 난 값..9...의 약수를 구하면 될 거 같은 느낌이 들었다.

그래서 12에도 적용해보기로 함.

12 -1 = 11......!! 11은 1을 제외하고 본인밖에 약수가 없,,다!

그래서 냅다 코드로 작성했다.

 

약수 구했었을 때 for문 조건에 Math.sqrt()을 사용했던 기억이 있어

이번에도 그렇게 사용했다.

현재 코드

class Solution {
    public int solution(int n) {

        n -= 1;
        for(int i = 2; i <= Math.sqrt(n); i++) {
            if(n % i == 0) {
                return i;
            }
        }
        return n;
    }
}

코드가 많이 줄었다.

그리고 간결해진 것 같다.

근데 뭐 좋은 코드인지는 여전히 모르겠다.

 

다른 사람의 풀이

다른 사람의 풀이에서 1등한 풀이다.

뭔가 반복을 많이해서 시간이 좀 걸릴 것 같지만

그래도 다른 사람이 보기에 간결하고 짧고 잘 파악할 수 있다.

저번 프로젝트에서 프리 수석님이 어떨땐 복잡한 것보다 간결해서 더 좋은 것들이 있다고 하셨다.

이번이 그 예가 아닌가 싶다.

사람에게 더 친숙한 코드를 작성하는 법을 연습하자.

화이팅.

반응형
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/알고리즘 풀이' 카테고리의 다른 글
  • 프로그래머스_소수 찾기 JAVA
  • 프로그래머스_문자열 내 마음대로 정렬하기 JAVA
  • 프로그래머스_문자열 내 p와 y의 개수 (for문 X) JAVA
  • [프로그래머스_1] 소수 찾기 JAVA
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    방통대
    프로그래머스
    Java
    JPA
    스프링부트
    넥사크로
    react
    springboot
    SQL
    전자정부프레임워크
    egov
    백준
    토비의스프링부트
    MSA
    oracle
    운영체제
    QueryDSL
    코딩테스트
    자바스크립트
    인프런
    토이프로젝트
    SpringBoot를 이용한 RESTful Web Service 개발
    기출문제
    IT
    에러해결
    RESTful
    개발자
    프론트엔드
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
프로그래머스_나머지가 1이 되는 수 찾기 JAVA
상단으로

티스토리툴바