Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/프로그래머스

    [프로그래머스] 하샤드 수

    2021. 6. 19.

    by. Hyeon-Uk

    반응형

    https://programmers.co.kr/learn/courses/30/lessons/12947

     

    코딩테스트 연습 - 하샤드 수

    양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

    programmers.co.kr


    -풀이-

    먼저, x의 자릿수의 합을 구해야 한다.

    x는 맨 마지막에 나누어떨어지는지에 써야하므로 임시변수 n에 x의 값을 넣는다.

    그런뒤, n의 맨 왼쪽부터 더해준다. n%10을 이용해주면, n의 맨 왼쪽의 값을 얻을 수 있다. 이 값은 사용했으므로, n=n/10을 해서, 사용한 자리는 제거해주며 모든 자릿수의 합을 구해준다.

    ex)

    n=121일때 s의 초기값 =0,

    s=s+n%10=0+1=1

    n=n/10=12

     

    s=s+n%10 = 1+2 = 3

    n=n/10=1

     

    s=s+n%10 = 3+1=4

    n=n/10 = 0

    n=0이되면, 모든 자릿수를 더했다는 뜻이 되므로, 종료

     

    그런뒤, x와 자릿수의 합 s를 나눴을때, 나누어떨어지면 true, 나누어떨어지지 않는다면 false를 출력해주면된다.

     

    -시간복잡도-

    간단한 계산이므로 O(1)이다

     

    -코드-

     

    #include <string>
    #include <vector>
    
    using namespace std;
    
    bool solution(int x) {
        bool answer = true;
        int n=x;
        int s=0;
        while(n>0){
            s+=n%10;
            n/=10;
        }
        answer=!(x%s);
        return answer;
    }

     

     

    반응형
    저작자표시

    '문제풀이 > 프로그래머스' 카테고리의 다른 글

    [프로그래머스] 행렬의 덧셈  (0) 2021.06.19
    [프로그래머스] 핸드폰 번호 가리기  (0) 2021.06.19
    [프로그래머스] 평균 구하기  (0) 2021.06.19
    [프로그래머스] [1차] 비밀지도  (0) 2021.06.19
    [프로그래머스] 이름이 있는 동물의 아이디  (0) 2021.06.13

    댓글

    관련글

    • [프로그래머스] 행렬의 덧셈 2021.06.19
    • [프로그래머스] 핸드폰 번호 가리기 2021.06.19
    • [프로그래머스] 평균 구하기 2021.06.19
    • [프로그래머스] [1차] 비밀지도 2021.06.19
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바