백준 1977번: 완전제곱수

2024. 4. 23. 22:55·PS

 

 

 


 

 

문제

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오.

 

 

실행 결과

 

코드(c++)

#include <iostream>
#include <cmath>
using namespace std;

int main() {
	int a, b;
	cin >> a >> b;
	int sum = 0; int min = -1;
	int n = 1;
	for (int i = a; i <= b; i++) {
		int n = sqrt(i); // 제곱근 함수 사용
		if (n * n == i) {
			sum += i;
			if (min == -1 || min > i) {
				min = i;
			}
		}
	}
	if (sum == 0)
		cout << -1;
	else
		cout << sum << "\n" << min;
	return 0;
}

 

 

 

코드 설명

먼저 완전제곱수의 개념을 알아야 한다.

완전제곱수란 어떤 자연수의 제곱 형태로 표현할 수 있는 수이다.

ex. 1, 4, 9, 16, 25, 36...

 

cmath 라이브러리를 이용해 sqrt 함수를 이용하면 제곱근을 구할 수 있다.

해당 범위 내의 임의의 수의 제곱근을 n이라고 하자.

제곱근 n을 다시 제곱했을 때 원래 i와 같다면 이는 완전제곱수이다.

 

여기서 핵심은 자료형 int 이다.

완전제곱이 아닌 수를 제곱근, 즉 루트화 할 경우 

int 자료형은 소숫점 뒤를 전부 날려버린다..!

 

예를 들어 i가 9일 경우, n은 3으로 정확하게 구해진다.

그러나 만약 i가 10일 경우, 원래 루트 10은 대략 3.1623..이지만 int 형이라 그냥 3이 되어버린다.

따라서 조건식 n * n == i 은 완전제곱일 경우에만 성립한다:)

 

 

 


문제 출처: 

 

1977번: 완전제곱수

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완

www.acmicpc.net

 

 

저작자표시 (새창열림)

'PS' 카테고리의 다른 글

백준 2444번: 별 찍기 - 7  (0) 2024.04.26
백준 2231번: 분해합  (0) 2024.04.24
백준 1924번: 2007년  (0) 2024.04.21
코드트리: 1시간 뒤 시간 출력 (c++)  (0) 2024.04.19
코드트리: 소수 (c++)  (0) 2024.04.18
'PS' 카테고리의 다른 글
  • 백준 2444번: 별 찍기 - 7
  • 백준 2231번: 분해합
  • 백준 1924번: 2007년
  • 코드트리: 1시간 뒤 시간 출력 (c++)
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (195)
      • Web (17)
        • JavaScript (6)
        • TypeScript (1)
        • React (6)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (18)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (4)
        • LG U+ URECA (5)
        • Project (2)
        • Conference (2)
      • IT (3)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • Statistics (11)
      • Book (5)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

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

    • Github
    • Baekjoon
    • X
    • LinkedIn
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    C++
    BAEKJOON
    JavaScript
    그리디
    네트워크
    파이썬
    생활코딩
    OS
    코드트리
    ossca
    React
    자바기반응용프로그래밍
    운영체제
    BFS
    자바스크립트
    백준
    DP
    Python
    Java
    통계학
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
abyss-s
백준 1977번: 완전제곱수
상단으로

티스토리툴바