[Programmers] Level 1. 모의고사 (C++)
2019. 7. 25. 23:24
알고리즘/Programmers
정리 수포자 3명이 있고, 3명이 각각 정해진 규칙에 맞춰 답을 작성해서 제출한다. 1번부터 답이 정해져있기 때문에 규칙적으로 반복되는 정답의 갯수를 이용해 정답을 체크해준다. 정답의 갯수가 정해져 있어 그 수만큼 반복되기 때문에 나머지를 구해서 맞은 정답의 갯수를 구해준다. 정답일 때, 카운트를 세어주고 문제에서 가장 많은 정답을 맟춘 학생을 출력해야하기 때문에 카운트가 많은 수포자를 answer 에 넣어준다. 따라서, 이 문제는 이렇게 풀어보았다. 1) 수포자가 정해진 답을 계속해서 반복한다는 점. 그리고 수포자는 어떤 문제가 나와도 이 정답만 제출한다. 2) 정답이 반복되기 때문에 반복되는 정답의 갯수를 구한다. 3) 반복되는 정답의 갯수가 5개이고, 7번 문제라면 7를 5로 나눈 나머지인 2 번째..
[Programmers] Level 1. 소수의 합 (C++)
2019. 7. 25. 22:50
알고리즘/Programmers
정리 소수를 구하는 문제였다. 소수를 구하는 방법 중 가장 많이 알려져있는 알고리즘은 에라토르테네스의 체 다. 에라토스테네스의 체를 간단하게 설명해보면, 2부터 시작한다. 그리고 2부터 자신을 제외한 자신의 배수를 제거한다. 2를 제외한 2의 배수를 제거하고, 3을 제외한 3의 배수를 제거하고, 4는 2의 배수이기 때문에 이미 제거가 되어있다. 이미 제거가 되어있는 수들은 건너뛰고 진행한다. 위와 같은 과정을 반복하면 남아있는 숫자는 소수가 될 것이다. 따라서, 에라토스테네스의 체를 이용해서 풀면 쉽게 풀 수 있는 문제였다. 소스 코드 #include using namespace std; long long solution(int N) { long long answer = 0; vector m; for(i..