반응형
DoZZang
Do IT
DoZZang
전체 방문자
오늘
어제
  • Programming
    • Git
    • Web
    • 기타
    • Python
      • CodeUp
    • Math
    • Algorithm
    • Baekjoon
    • C,C++
    • Life
      • 독서
      • Just
      • 영화

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DoZZang

Do IT

[C] 백준 1065번 : 한수
Baekjoon

[C] 백준 1065번 : 한수

2023. 1. 9. 23:42
반응형

 

https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int an(int n);
int an(int n) {
	int f, s, t = 0;	//first,second,third
	int count = 99;		// 한 자리수와 두 자리수는 모두 등차수열을 이룬다.
	if (n < 100) { return n; }
	else {
		for (int i = 100; i <= n; i++) {
			f = i % 10; // 일의 자리
			s = (i % 100) / 10; // 십의 자리
			t = i / 100; // 백의 자리
			if ((f - s) - (s - t) == 0) { count++; } // 공차 d가 같기 때문
		}
		return count;
	}
}

int main() {
	int n;
	scanf("%d", &n);
	printf("%d",an(n));
	return 0;
}

☞ 풀이 전

문제를 이해하기 어렵지 않았고 그 문제를 일단 코드로 써보는데도 어렵지 않았다.

이전에 풀었던 셀프 넘버 함수와 매개변수의 자료형이 같아서일까 거부감 없이 잘 구상했다.

한 자리수와 두 자리수는 등차수열이 아닌가?라는 고민은 예제 출력이 말끔히 해결해줬었다.

한 자리수와 두 자리수는 모두 등차수열이다. 

 

☞ 풀이 후

함수 내에서 각각의 자리에 위치한 수를 뽑아내기 위해
         f = n % 10; // 일의 자리
         n /= 10;   // 오류의 원인
         s = n % 10; // 십의 자리
         t = n / 10; // 백의 자리
위와 같이 작성했었으나 n/=10으로 for문이 더 이상 참이 될 수 없었다.. 

 

#include <stdio.h>

int seq(int n);

int main(void) {
    
    int input;
    
    scanf("%d", &input);
    
    printf("%d", seq(input));
    
}

int seq(int n) {
    
    int count=0;
    
    for(int i=1; i<n+1; i++) {
        if(0<i && i<100) count++;
        else if(i<1000) {
            if( i/100 - (i%100)/10 == (i%100)/10 - ((i%100)%10) ) count++;
        }
    }
    
    return count;
}
https://develop247.tistory.com/20

개인적으로 정말 코드를 간결하게 잘 짠다고 생각하는 분인데 사소하지만 마지막 조건식이 같아서 좋았다..

100이상일 때 각각의 자리수를 따로 변수에 저장하지 않고 바로 계산하셨다.

또 한 자리수와 두 자리수를 for문을 통해 모두 count해주었다.

요런 식으로도 생각할 수 있겠구나 이 분걸 보면 항상 이렇게 느낀다.

반응형
저작자표시 (새창열림)

'Baekjoon' 카테고리의 다른 글

[C] 백준 1008번 : A/B  (0) 2023.01.10
[C] 백준 2908번 : 상수  (0) 2023.01.09
[C] 백준 4673번 : 셀프 넘버  (0) 2023.01.07
[C]백준 15596번 : 정수 N개의 합  (0) 2023.01.05
[C] 백준 4344번 : 평균은 넘겠지  (0) 2023.01.04
    'Baekjoon' 카테고리의 다른 글
    • [C] 백준 1008번 : A/B
    • [C] 백준 2908번 : 상수
    • [C] 백준 4673번 : 셀프 넘버
    • [C]백준 15596번 : 정수 N개의 합
    DoZZang
    DoZZang
    과정은 힘들지만 성장은 즐겁습니다.

    티스토리툴바