본문 바로가기

PS/백준

[BOJ] 백준 1065 한수 (Swift)

728x90
반응형

문제

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

 

1065번: 한수

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

www.acmicpc.net

풀이

  • 이 문제는 N이 1 ~ 1000 까지로 주어짐
  • 1부터 99까지는 한수다.
    • 2자리 이하이기 때문에 전부 등차수열이라고 할 수 있음
    • N이 100보다 작다면, N개가 한수이다.
  • 1000은 한수가 아님!
  • 100 ~ 999의 숫자가 한수인지 아닌지 판별하면 된다.
    • 만약 한수라면 count를 증가시킨다.
  • 한수인지 아닌지 판별하는 것은 말 그대로 등차수열인지 확인만 해주면 된다.
    • 3자리 수에 대해서만 판별하면 되므로, 100이라면 [1, 0, 0] 으로 만들어 준 뒤 등차수열을 만족하는지 확인하면 된다.

소스코드

후기

  • 어렵지 않은 문제였다.
  • 등차수열인지 판별하기 위해 배열로 만들지 않고도, 몫과 나머지를 구하는 방식으로도 풀이할 수 있을 것 같다.
  • N이 1000 이하가 아니라면 어떻게 풀이할 수 있을지에 대해 생각해봄
    • 배열로 만들어 준 뒤, 배열을 돌면서 공차가 같은지 확인하면 될 것 같다.
  • 숏코딩으로도 재미삼아 풀어봤다..
print((1...Int(readLine()!)!).filter{$0<100||$0/100+$0%10==$0/10%10*2}.count)
728x90
반응형