ALL 56

[C++] 백준 알고리즘 1929번 (소수 찾기)

문제 이번에 다뤄볼 문제는 1929번 문제 '소수 찾기'입니다. 소수 찾기 문제에서 연습해야 할 key-point는 에라토스테네스의 체 입니다. 에라토스테네스의 체는 쉽게말해 소수를 구했을 경우 해당 수를 소수로 갖는 뒤의 숫자들을 배제시키는 방법이라고 생각하시면 됩니다. 아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다. 코드(C++) #include #include #pragma warning (disable:4996) using namespace std; int main(){ int pn = 0; bool c[1000001] = { false }; int m, n; scanf("%d %d", &m, &n); for (int i = 2; i

algorithm 2019.01.20

[C++] 백준 알고리즘 1978번 (소수 찾기)

문제 이번에 다뤄볼 문제는 1978번 문제 '소수 찾기'입니다. 소수 찾기 문제에서 연습해야 할 key-point는 소수찾는법을 암기하는것 입니다. 네이버에서 알고리즘 포스팅을 했을때 예상외로 많은 조회수를 올린 문제가 바로 이 소수찾기 문제였습니다. 소수는 모두가 잘 알고있듯, 약수가 1과 자기 자신밖에 없는 수를 칭합니다. 만약 입력된 N값이 소수가 아니라면 N = a x b (a

algorithm 2018.10.26

[C++] 백준 알고리즘 11005번 (진법 변환2)

문제 이번에 다뤄볼 문제는 11005번 문제 '진법 변환2'입니다. 진법 변환2 문제에서 연습해야 할 key-point는 10진법 수를 B진법으로 바꾸는 방법 입니다. 10진법 수를 B진법으로 바꾸는 방법만 알고있다면 이 문제는 사실 별로 설명할게 없습니다. 우선 10진법 수 하나를 B로 나눈 몫이 0이 될때까지 나머지를 계속 구해주면 됩니다. 예를 들어 보여드리자면 ex) 10진법 수 11을 3진법으로 바꾸시오 11/3 = 3 ... 2 3/3 = 1 ... 0 1/3 = 0 ... 1 3진법 수 = 102 이렇게 몫이 0이 될때까지 구하고 나머지 값들을 역순으로 적어주면 끝입니다. 추가적으로 혹시나 A:10, B:11 ... 이런식으로 10진법을 넘어가는 진법은 알파벳 대문자를 사용한다는 부분에서 막..

algorithm 2018.10.25

[C++] 백준 알고리즘 9613번 (GCD합)

문제 이번에 다뤄볼 문제는 9613번 문제 'GCD 합'입니다. GCD 합 문제에서 연습해야 하는 key-point는 유클리드 호제법과 재귀함수입니다. 유클리드 호제법은 두 양의 정수 또는 정식의 최대공약수를 구하는 방법입니다. 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘 뜻합니다. 2개의 자연수 a, b(a>b)에 대해서 a를 b로 나눈 나머지를 r이라고 하면, a와 b의 최대공약수는 b와 r의 최대공약수와 같습니다. 이 성질에 따라 GCD(a,b) = GCD(b,r) = GCD(r,r`) ... 를 반복하여 GCD(b,r)의 r이 0이되면 그때의 b가 최대공약수가 됩니다. ex) GCD(24,16) = GCD(16,8) = GCD(8,0) -> 최대공..

algorithm 2018.10.24

[C++] 백준 알고리즘 2999번 (비밀 이메일)

문제 이번에 다뤄볼 문제는 2999번 문제 '비밀 이메일'입니다. 비밀 이메일 문제에서 연습해야 하는 key-point는 배열과 이중포문입니다. 문제에서 주어진대로 상근이가 받은 메시지가 들어갈 1차원 배열을 생성하는게 우선입니다. 그리고 정인이가 몇개의 문자를 보냈는지 판단하기 위해 while을 돌며 '\0'을 만날때까지 count값을 증가시킵니다. 이제 count값으로 이중포문을 돌며 적당한 R과 C의값을 구해야합니다. 포문에서 사용되는 i*j의 값이 count와 같다면 분기 안으로 들어갑니다. 여기서 i는 R값이 될 예정이고 j는 C값이 될 예정입니다. 문제에서 주어진 조건은 R

algorithm 2018.10.24

[C++] 백준 알고리즘 1100번 (하얀 칸)

문제 이번에 다뤄볼 문제는 1100번 문제 '하얀 칸'입니다. 하얀 칸 문제에서 연습해야 하는 key-point는 2차원 배열과 이중포문입니다. 2차원 배열을 다루는 법을 알고있다면 쉽게 해결할 수 있는데, 문제에서 주어진 8*8 사이즈의 2차원 배열을 하나 생성하고 해당 배열을 탐색하는 동시에 입력을 받습니다. 이때 체스 말을 뜻하는 'F'의 입력을 분기점으로 잡고 현재위치가 하얀 칸이라면 count 변수를 증가시켜줍니다. 아래 해답 코드에서 볼 수 있듯, 이중포문을 돌면서 i와 j가 모두 짝수이거나 모두 홀수일때 하얀칸임을 판단하는데, 이는 체스판 모양을 떠올려 보면 쉽게 이해할 수 있습니다. 코드(C++) #include using namespace std; int main() { char arr[..

algorithm 2018.10.24
반응형