BOJ(343)
-
[백준 BOJ] 3040번 백설 공주와 일곱 난쟁이 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/3040 3040번: 백설 공주와 일곱 난쟁이 매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다. www.acmicpc.net 접근 방법 - 브루트포스 알고리즘의 기본 문제 백준의 3040번 문제는 브루트포스 알고리즘을 활용하여 해결해야 하는 기본 문제이다. 해당 문제는, 아홉 난쟁이의 모자에 적힌 숫자들을 통해 이들 중 일곱 난쟁이를 추려내야 하는 문제이다. 여기서, 일곱 난쟁이 모자의 숫자들을 합하면 100이 된다는 점을 이용하여 일곱 난쟁이를 추려내려 한다. 필자의 경우엔, 아홉 난쟁이 모자의 숫..
2022.06.17 -
[백준 BOJ] 4504번 배수 찾기 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/4504 4504번: 배수 찾기 첫째 줄에 n이 주어진다. 다음 줄부터 한 줄에 한 개씩 목록에 들어있는 수가 주어진다. 이 수는 0보다 크고, 10,000보다 작다. 목록은 0으로 끝난다. www.acmicpc.net 접근 방법 - 약수 판별의 기본 문제 백준의 4504번 문제는 배수의 개념에 관한 기본적인 약수 연산을 통해 해결해야 하는 문제이다. 해당 문제는, 입력값 a, b에 따라 b가 a의 배수인지 판별하여 양식대로 출력해야 하는 문제이다. (자세한 건 문제 설명 참고) 이 문제에선 약수 판별이 핵심인데, 이 연산에서는 나머지 연산자를 기본적으로 사용해야 한다. 이에 대한 명령어를 작성하는 데에 어색하다면, 아래의 설명과 코드를..
2022.06.17 -
[백준 BOJ] 2153번 소수 단어 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/2153 2153번: 소수 단어 소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자. 알파벳 대소문자로 이루어진 영어 단어가 하나 www.acmicpc.net 접근 방법 - 아스키코드에 관한 소수 판별 문제 백준의 2153번 문제는 아스키코드와 연관 지어진 소수 판별 문제이다. 해당 문제는, 입력받은 문자열에 대하여 특정 규칙에 따라 지정된 값이 소수인지를 판별해야 하는 문제이다. 여기서 규칙은, a~z에는 1부터 26의 값을 지정하며 A~Z에는 27부터 52의 값을 지정하고 이들의 값을 모두 합하여 문자열에 특정 값을..
2022.06.15 -
[백준 BOJ] 2948번 2009년 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/2948 2948번: 2009년 2009년 M월 D일의 요일을 영어로 출력한다. 출력은 다음 중 하나이다. "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday". www.acmicpc.net 접근 방법 - 날짜에 대한 사칙연산 문제 백준의 2948번 문제는 날짜에 관련한 기본적인 사칙연산 문제이다. 해당 문제는, 입력받은 2009년의 특정 날짜가 무슨 요일인지에 관하여 출력해야 하는 문제이다. 여기서, 2009년 1월 1일이 목요일이라는 점이 예제 입출력에 제시되어있는데 이 점을 유의하길 바란다. 필자의 경우엔 배열을 응용하였는데, 어떻게 응용하였는지는 ..
2022.06.15 -
[백준 BOJ] 2581번 소수 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 접근 방법 - 소수 연산의 기본 문제 백준의 2581번 문제는 소수 연산에 있어 기본적인 원리를 묻고 있는 문제이다. 해당 문제는, 특정 범위에 속해있는 소수들의 합과 그들 중의 최솟값을 출력해야 하는 문제이다. 본래 해당 문제는 에라토스테네스의 체 알고리즘으로 해결하는 것이 정석이다. 다만, 필자가 지금부터 설명할 코드는 이 알고리즘과는 무관하며 방법이 매우 원시적이라는 점 유의하길 바란다. 만..
2022.06.11 -
[백준 BOJ] 1929번 소수 구하기 (C++/cpp)
문제 설명 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 접근 방법 - 에라토스테네스의 체의 기본 문제 백준의 1929번 문제는 에라토스테네스의 체를 응용하여 해결해야 하는 기본 문제이다. 해당 문제는, 특정 범위 내의 소수를 오름차순으로 출력해야 하는 문제이다. 여기서, 소수는 특정 숫자의 약수가 1과 자기 자신뿐인 숫자를 뜻한다. 이러한 소수를 구하는 데에 많이 쓰이는 알고리즘이 바로 에라토스테네스의 체이다. 이 개념에 대해 아직 어색하다면, 아래 필자의 설명을 참고하거..
2022.06.08