본문 바로가기
카테고리 없음

[프로그래머스 1 / c++] 하샤드 수

by tokkiC 2022. 6. 17.

무식하게 조건별로 식을 써버렸지만... 구간이 짧아서 가능했지 뭐... 무식하게 풀어서 10점 중 2점짜리 풀이다

이렇게 구간별로 조건을 걸지말고 아래와 같이 알맞은 로직을 생각해서 시간을 아끼도록 하자 

#include <string>
#include <vector>

using namespace std;

bool solution(int x) {
    bool answer=0;
    int sum=0;
    if(x<10){
        sum = x;
    }
    if((x>=10)&&(x<100)){
        sum = (x/10)+(x%10);
    }
    if((x>=100)&&(x<1000)){
        sum = (x/100)+((x%100)/10)+(x%10);
    }
    if((x>=1000)&&(x<10000)){
        sum = (x/1000)+((x%1000)/100)+((x%100)/10)+(x%10);
    }
    if(x==10000){
        sum = 1;
    }
    if(x%sum==0){
        answer=true;
    } else{
        answer=false;
    }
    return answer;
}

 

이 코드는 현명한 자의 코드다... 바로 이렇게 생각할수있도록 노력하자

#include <bits/stdc++.h>
using namespace std;

bool solution(int x) {
	
	bool solution(int x) {
    
    bool answer = true;
    int temp = x;
    int sum= = 0;
    
    // 마지막 자리수부터 누적합에 더하고, 10으로 나눠 자리수를 줄여 나간다  
    while(temp>0){
    	sum=sum+(temp%10);
    	temp=(temp/10);
	}

// 다음 if 문을 삼항연산자로 나타내면 아래와 같다 
//	if(x%sum==0)
//		true;
//	else
//		false;
    return x % Sum == 0 ? true : false;
}

댓글