Pink Transparent Star

C++ 18

[ 백준 ] 브루트포스 - 체스판 다시 칠하기

문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8×8 크기의 체스판으로 잘라낸 후에 몇 개의 정사각형을 다시 칠해야겠다고 생각했다. 당연히 8..

Coding Test/백준 2023.06.21

[ 백준 ] 브루트포스 - 수학은 비대면 강의입니다.

문제 수현이는 4차 산업혁명 시대에 살고 있는 중학생이다. 코로나 19로 인해, 수현이는 버추얼 학교로 버추얼 출석해 버추얼 강의를 듣고 있다. 수현이의 버추얼 선생님은 문자가 2개인 연립방정식을 해결하는 방법에 대해 강의하고, 다음과 같은 문제를 숙제로 냈다. 다음 연립방정식에서 x와 y의 값을 계산하시오. 4차 산업혁명 시대에 숙제나 하고 앉아있는 것보다 버추얼 친구들을 만나러 가는 게 더 가치있는 일이라고 생각했던 수현이는 이런 연립방정식을 풀 시간이 없었다. 다행히도, 버추얼 강의의 숙제 제출은 인터넷 창의 빈 칸에 수들을 입력하는 식이다. 각 칸에는 −999이상 999이하의 정수만 입력할 수 있다. 수현이가 버추얼 친구들을 만나러 버추얼 세계로 떠날 수 있게 도와주자. 입력 정수 a, b, c,..

Coding Test/백준 2023.06.08

[ 백준 ] 브루트포스 - 분해합

문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. #include using namespace std; int main() { int N, result = 0; cin >> N; for (int i = 1; i <..

Coding Test/백준 2023.06.08

[ 백준 ] 킹, 퀸, 룩, 비숍, 나이트, 폰

[ 문제 ] 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다. 체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오. [ 문제 해결 ] #include using namespace std; // 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개 int main(void) { int chess[6] = { 0, }; int chessCh..

Coding Test/백준 2022.09.26

[ 열혈 c++ 프로그래밍 ] Part2 - 1

[ 참조자 기반의 Call-by-reference 구현 ] 더보기 01. 참조자를 이용해서 다음 요구사항에 부합하는 함수를 각각 정의하여라. 1. 인자로 전달된 int형 변수의 값을 1씩 증가시키는 함수 2. 인자로 전달된 int형 변수의 부호를 바꾸는 함수 그리고 위의 각 함수를 호출하여 그 결과를 확인하는 main 함수까지 작성하여라. #include using namespace std; void AddNumber(int& ref1, int& ref2); void ChangeNumber(int& ptr1, int& ptr2); int main(void) { int num1 = 10; int num2 = 20; int num3 = -30; int num4 = 40; AddNumber(num1, num2..

디폴트 매개변수( Default Value )

디폴트 값이란 무엇인가? 함수 호출 시 인자를 넣지 않는 경우 기본적으로 설정되어 있는 값을 의미한다. 반대로, 인자를 넣는 경우에는 설정 되어있는 값을 사용하는 것이 아닌 현재 넣는 인자의 값을 사용한다. 디폴트 매개변수를 사용하는 방법은 무엇인가? 함수 호출 시 매개변수에 "= 값 "을 사용하여 값을 설정 할 수 있다. 아래의 예제를 보고 내용을 확인 해보겠습니다. #include using namespace std; int Sum(int x = 1, int y = 2); int main(void) { cout

C++언어 2022.08.25

'Call by Value'와 'Call by Reference'

기술 면접 중 대표적으로 알아야할 내용들은 하나씩 정리해보고자 한다. 먼저 대표적으로 함수를 호출하는 방법이 2가지 존재한다. 함수에 정의한 매개변수의 형태에 따라 결정이 된다. "Call by Value" : 값을 통한 호출 "Call by Reference" : 참조를 통한 호출 Call by Value 함수에서 값을 복사해서 전달하는 방식으로 인자로 전달되는 변수를 함수의 매개변수에 복사하는 것을 의미한다. 복사가 된 경우 인자로 전달된 변수와는 다른 변수로 된다. 매개변수를 변경하더라도 원래의 변수에는 영향을 미치지 않는다. 원본 값을 변경할 필요없을 경우 해당 방식을 사용하면 된다. But 원본의 내용을 복사 하기때문에 메모리의 사용량이 늘어난다. 대표적인 예로 선언된 변수를 Swap함수를 통해..