기사단원의 무기

2025. 1. 24. 20:08·코딩 테스트/프로그래머스

문제

문제 해석

1. 1부터 number까지 각각 숫자의 약수를 구한다.

2. 약수의 갯수가 limit을 넘어가는 경우 power를 answer에 더하고
3. 아닌 경우 약수의 갯수를 answer에 더한다.
4. 약수의 갯수는 1부터 해당 숫자까지 나누어서 나머지가 0인 수이다.
5. number가 100,000이므로 O(N^2)까지 괜찮다 생각했으나 시간초과가 발생한다.
6. O(logN)으로 푸는 방식(약수는 쌍을 이루므로 제곱근으로 제한을 둠)으로 푸니 시간제한을 통과할 수 있었다.

 

코드

#include <cmath>

using namespace std;

int solution(int number, int limit, int power) {
    int answer = 1;
    
    // 1부터 number까지 각각 숫자의 약수를 구한다.
    // 약수의 갯수가 limit을 넘어가는 경우 power를 answer에 더하고
    // 아닌 경우 약수의 갯수를 answer에 더한다.
    // 약수의 갯수는 1부터 해당 숫자까지 나누어서 나머지가 0인 수이다.
    // number가 100,000이므로 O(N^2)까지 괜찮다 생각했으나 시간초과가 발생한다.
    // O(logN)으로 푸는 방식(약수는 쌍을 이루므로 제곱근으로 제한을 둠)으로 푸니 시간제한을 통과할 수 있었다.
    
    int Attack = 1;
    int MaxVerify = 0;
    for(int Knight = 2; Knight <= number; ++Knight)
    {
        Attack = 0;
        MaxVerify = sqrt(Knight);
        
        for(int Test = 1; Test <= MaxVerify; ++Test)
        {
            if(Knight % Test == 0)
            {
                if(Knight / Test == Test) ++Attack;
                else Attack += 2;
            }
        }
        
        if(Attack > limit) answer += power;
        else answer += Attack;
    }    
    
    return answer;
}

 

다른 사람의 풀이

1. 제곱근 대신 위의 Test를 제곱하여 풀이

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

옹알이 (2)  (1) 2025.01.31
로또의 최고 순위와 최저 순위  (0) 2025.01.27
덧칠하기  (1) 2025.01.23
소수 만들기  (1) 2025.01.22
모의고사  (3) 2025.01.21
'코딩 테스트/프로그래머스' 카테고리의 다른 글
  • 옹알이 (2)
  • 로또의 최고 순위와 최저 순위
  • 덧칠하기
  • 소수 만들기
DevJoo1120
DevJoo1120
  • DevJoo1120
    Jin's Programming
    DevJoo1120
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • 포트폴리오 (7)
        • Castlevania: Aria of Sorrow.. (7)
        • [UE5] KILL Everything (0)
      • C++ (0)
      • 라이브러리 (1)
      • 다이렉트X11 (0)
      • Unreal Engine (11)
        • Unreal Document (1)
        • 이것 저것 (8)
        • UI (1)
      • 자료구조 및 알고리즘 (0)
      • 책 정리 (3)
        • 코딩 테스트 합격자 되기 C++ 편 (10)
      • 코딩 테스트 (32)
        • 프로그래머스 (32)
      • 스파르타 코딩 언리얼 1기 (9)
        • 특강 (0)
        • C++와 Unreal Engine으로 3D .. (2)
      • TIL(Today I Learned) (63)
      • 영어 공부 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    코딩테스트
    팀 프로젝트
    스파르타 코딩 클럽
    C++
    코딩 테스트 합격자 되기 c++ 편
    Unreal Engine 5
    책 정리
    문자열
    WINAPI
    과제
    정리
    이중 반복문
    정렬
    반복문
    Study
    배열
    map
    코딩 테스트
    Til
  • hELLO· Designed By정상우.v4.10.5
DevJoo1120
기사단원의 무기
상단으로

티스토리툴바