[프로그래머스/java/Lv.0] 순서쌍의 개수

2025. 1. 4. 10:38·코테/프로그래머스 JAVA Lv.0

 

 

 

* 문제 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n; j++){
                if(n % i == 0)
                if(n / i == j){
                    answer++;
                }
            }
        }
        return answer;
    }
}

~> 오답!

처음에 if(n % i == 0) 작성을 안 했더니 결과값이 다르게 출력됐다.  if(n / i == j)에서 결과값이 소수점(ex. 5 / 2 = 2.5)이 나올 수 있기 때문에 잘못된 결과가 출력된 듯.

약수인걸 먼저 확인한 후 다음 코드 실행.

실행 결과는 성공으로 뜨는데 답 제출하면 제한 사항이 1 ≤ n ≤ 1,000,000라 그런가 시간초과로 에러 뜬다.

 

 

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i = 1; i <= n; i++){
            if(n % i == 0){
               answer++; 
            }
        }
        return answer;
    }
}

쉬운 방법이 있었다;

왜 복잡하게 꼬아서 생각하는지 모르겠네~

 

 

 

* 다른 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for (int i = 1; i <= n; i++) { // i는 1부터 n까지
            for (int j = 1; j <= n; j++) { // j는 1부터 n까지
                if (n % i == 0 && n / i == j) { // 약수 조건 확인
                    answer++;
                    break; // j에 대해 더 이상 확인하지 않음
                }
            }
        }
        return answer;
    }
}

처음 했던 방법 처럼 하려면 break;를 걸어줘야 함.

 

 

 

class Solution {
    public int solution(int n) {
        int answer = 0;

        // 1부터 n의 절반까지만 확인 (i * j 형태의 약수 쌍을 직접 계산)
        for (int i = 1; i * i <= n; i++) { // i * i <= n으로 루프 제한
            if (n % i == 0) { // i가 n의 약수라면
                answer++; // i는 약수
                if (i != n / i) { // i와 n / i가 다르면
                    answer++; // n / i도 약수
                }
            }
        }

        return answer;
    }
}

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'코테 > 프로그래머스 JAVA Lv.0' 카테고리의 다른 글

[프로그래머스/java/Lv.0] 직각삼각형 출력하기  (0) 2025.01.06
[프로그래머스/java/Lv.0] 길이에 따른 연산  (0) 2025.01.04
[프로그래머스/java/Lv.0] 조건에 맞게 수열 변환하기 1  (1) 2025.01.02
[프로그래머스/java/Lv.0] 홀짝 구분하기  (0) 2024.12.30
[프로그래머스/java/Lv.0] 배열에서 문자열 대소문자 변환하기  (1) 2024.12.27
'코테/프로그래머스 JAVA Lv.0' 카테고리의 다른 글
  • [프로그래머스/java/Lv.0] 직각삼각형 출력하기
  • [프로그래머스/java/Lv.0] 길이에 따른 연산
  • [프로그래머스/java/Lv.0] 조건에 맞게 수열 변환하기 1
  • [프로그래머스/java/Lv.0] 홀짝 구분하기
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    데이터연동
    오라클에러
    lombok
    코딩테스트_입문
    알고리즘
    책첵개발일지
    CS50
    부스트코스
    springbot
    코테
    업무자동화
    프로그래머스
    ORACLE에러
    부스트코스강의
    git명령어
    에러
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[프로그래머스/java/Lv.0] 순서쌍의 개수
상단으로

티스토리툴바