티스토리 뷰
반응형
문제의 조건
1. 매개변수 left, right가 주어짐
1 <= left <= right <= 1,000
2. left와 right 사이의 수들의 약수의 갯수를 구한 다음
약수의 갯수가 짝수이면 덧셈을 하고 홀수면 뺄셈을 함
3. 2번의 결과로 나온 값을 리턴
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(int left, int right) {
map<int, int> mapAliquot; //수와 그 약수의 갯수를 저장할 배열
int iCount = 0;
for (int i = left; right >= i; i++)
{
for (int j = 1; i >= j; j++)
{
//몫이 나누는 수보다 작아지기 전 까지만 나눠보면 됨
int quotient = i / j; //몫
int remainder = i % j; //나머지
if (0 == remainder)
{
//약수의 갯수 카운트
if (quotient == j) //몫이랑 나누는 수가 같으면 약수 1개 증가
iCount++;
else
iCount += 2; //다르면 2개 증가
}
if (j > quotient)
break;
}
//수와 약수의 갯수 저장 후 카운트 변수 초기화
mapAliquot.insert(pair<int, int>(i, iCount));
iCount = 0;
}
int answer = 0;
for (auto count: mapAliquot)
{
if (0 == count.second % 2)
answer += count.first;
else
answer -= count.first;
}
return answer;
}
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
[C++] 프로그래머스 위클리 챌린지 8주차 - 최소직사각형 풀이 (0) | 2021.09.30 |
---|---|
[C++] 프로그래머스 3진법 뒤집기 풀이 (0) | 2021.09.28 |
[C++] 프로그래머스 실패율 풀이 (0) | 2021.09.26 |
[C++] 프로그래머스 폰켓몬 풀이 (0) | 2021.09.25 |
[C++] 프로그래머스 체육복 풀이 (0) | 2021.09.24 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 컴퓨터
- 코딩공부
- dp
- 그리디
- c언어
- 너비우선탐색
- c++
- 애플
- 백준
- 문제풀이
- 영어공부
- 캐나다생활
- 다이나믹프로그래밍
- BFS
- C언어기초
- 프로그래밍
- 알고리즘
- 컴퓨터사이언스
- 기초
- 해커랭크
- 프로그래머스
- 하드웨어
- greedy
- 깊이우선탐색
- 캐나다
- 아이패드
- DFS
- 컴퓨터공부
- 스위프트플레이그라운드
- hackerrank
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함