전체 글 39

백준 2903번 중앙 이동 알고리즘 (C++)

단계의 4번째 문제이다. https://www.acmicpc.net/problem/2903 이전 문제들은 여기서 볼 수 있다.2025.03.19 - [코테] - 백준 2745번 진법 변환 (C++)2025.03.20 - [코테] - 백준 11005번 진법 변환 2 (C++)2025.03.20 - [코테] - 백준 2720번 세탁소 사장 동혁 (C++) 이번 문제는 외계 지형을 만드는 알고리즘을 만드는 것 이라고 말하고규칙을 파악해서 식을 구하는 것이다. 규칙이 어렵지는 않아서 식을 금방 구할 수 있다. N 번 반복했을 때의 점의 개수는 한 줄의 점의 개수의 제곱이다. 그렇다면 한 줄의 점의 개수만 구하면 되겠다고 생각했다.  점이 늘어나는 규칙은 정사각형의 각 변의 중앙에 점을 추가하고, 정사각형의 중심..

코테 2025.03.22

백준 2720번 세탁소 사장 동혁 (C++)

https://www.acmicpc.net/problem/2720  단계의 3번째 문제이다.2025.03.19 - [코테] - 백준 2745번 진법 변환 (C++)2025.03.20 - [코테] - 백준 11005번 진법 변환 2 (C++)1번째와 2번째 문제는 여기서 볼 수 있다.  이번 문제는 거스름 돈의 동전 개수를 최소한으로 구하는 문제이다.  거스름돈 실수는 정말 하면 안된다. 아르바이트의 기본이다. 그런데 리암은 그렇지 않았다.사실 요즘 포스기는 워낙 기능이 많아서 이런거 이미 구현되어 있을 것이다. 내가 일하고 있는 매장도 손님이 지불한 금액(지폐 등)을 입력하면 거스름돈 얼마 주어야 하는지 나온다.(물론 오백원 동전 몇개, 백원 동전 몇개.. 이런식으로 나오진 않고 그냥 거스름돈의 총량만 ..

코테 2025.03.21

백준 11005번 진법 변환 2 (C++)

https://www.acmicpc.net/problem/11005  11005번 진법 변환 2 10진법 수를 B진법으로 바꿔서 출력하는 문제이다.  #include #include using namespace std;int main(){ int N, B; cin >> N >> B; vector v; int a = N % B; do { N /= B; char c; if (a > 9) { c = 'A' + (a - 10); } else { c = a + '0'; } v.push_back(c); a = N % B; } while (N >= B || a != 0); for (auto i = v.rbegin(); i != v.rend(); ++i) { cout 10진법으로 들어온 수를 B..

코테 2025.03.20

백준 2745번 진법 변환 (C++)

이전 포스팅들은 각 단계별로 묶어서 업로드 했는데, 각 문제들에서 시사할 바와 내가 고민한 바 등등 적고싶은게 많아졌다. 한 문제당 고봉밥(최대한;;)으로 업로드 하는 형식으로 변경하려고 한다.  이번 단계의 제목은 이다.개인적인 의견으로 수학적 사고력이 필요한 문제라고 생각한다.나는 문제들에서 주어진 것이 무엇인지, 내가 구해야 하는 것이 무엇인지를 생각하면서 풀었다. https://www.acmicpc.net/problem/2745 2745번 #include #include #include using namespace std;int main(){ string N; int B; cin >> N >> B; vector v; for (const char& elem : N) { char num = el..

코테 2025.03.19

백준 단계별로 풀어보기 (7)

이번 단계는 2차원 배열에 관한 문제들이 수록되어 있다. STL에서 제공하는 자료구조(사실 오직 vector)들을 사용하면서 간단하게 풀었다. https://www.acmicpc.net/problem/2738 2738번 행렬 덧셈 #include #include using namespace std;int main(){ int n, m; cin >> n >> m; vector> v(n, vector(m, 0)); // n*m 행렬 0으로 초기화 for (int i = 0; i > num; v[r][l] += num; } } } for (auto vec : v) { for (int n : vec) cout 입력으로 주어진 행렬의 크기에 맞게 2차원 배열을 vector로 생성한다. 차례대로 ..

코테 2025.03.18

언리얼 엔진 에디터 빌드

오늘의 교훈 : 주의사항을 "잘" 읽어볼 것.대충 하다가 다렉을 못찾고.. SDK 문제니 뭐니 다 다운받았는데도 GenerateProjectFiles 배치파일 실행하는 데에서 에러가 발생해서 다시는 이런일을 겪지 않으리 + 나처럼 안타까운 실수를 하는 사람들이 없길 바라며 올림.https://dev.epicgames.com/documentation/ko-kr/unreal-engine/downloading-unreal-engine-source-code  일단 해당 링크 (언리얼 엔진 공식 사이트의 소스코드 다운로드 방법)를 참고해서 다운받을 수 있다. 필자는 clone하지 않고 zip파일을 다운로드 해서 직접 압축을 해제했는데 여기서 문제가 발생했었다.  정확한 이유는 모르겠지만, directX 가 존재하..

멀티쓰레드 프로그래밍 입문

멀티쓰레드는 C++ 프로그래밍 언어 내에 멀티스레드 라이브러리에 존재한다. C++11 에 추가되었으며 표준으로 존재한다. C++ 11에서 지원되기 전에는 각 OS 마다 사용할 수 있는 방법이 달랐다.windows에서는 WIN32 라는 라이브러리에서 지원하는 API를 사용해서 프로그래밍 해야했고, Linux는 pthread API를 사용해서 프로그래밍 했다. 현재는 C++11 에 공개된 라이브러리를 이용하면 된다.  thread 를 지원하는 방법은 각 OS 마다 달랐다.먼저 windows 에서 쓰레드를 어떻게 지원했냐 하면windows 에서 쓰레드는 프로세스를 구성하는 원소이다.모든 프로세스는 시작 시 한 개의 쓰레드를 갖고 실행된다.운영체제가 직접 쓰레드를 스케줄링.멀티 CPU(또는 core)라면 여러..

멀티쓰레드 프로그래밍 소개

오늘날의 컴퓨터는 코어 수에 따라서 직렬 컴퓨터와 병렬 컴퓨터 두 종류로 나눌 수 있다. 직렬 컴퓨터는 Serial Computer라고 하고, Single Core 컴퓨터라고도 한다.하나의 CPU(또는 Core)만을 갖는 컴퓨터로 듀얼 코어가 대중화되기 이전의 대부분의 컴퓨터를 가리킨다.학사 과정에서 배우는 대부분의 컴퓨터공학 지식들은 (자료구조 및 알고리즘) 싱글 코어 컴퓨터를 가정하고 있다.  병렬 컴퓨터는 Parallel Computer 라고 한다.여러 개의 CPU(또는 Core)가 명령을 실행하는 컴퓨터로 직렬 컴퓨터의 속도 제한을 극복하기 위해 제작되었다. 현재 우리가 작성하는 프로그램이 실행되는 컴퓨터이다.  병렬 컴퓨터병렬 컴퓨터는 여러 개의 작업을 보다 더 빨리 실행하기 위해서 ... 는 ..

백준 단계별로 풀어보기 (6)

https://www.acmicpc.net/problem/2508325083번 새싹 나의 풀이#include int main(){ std::cout 문자열 사이의 특수 문자들에 유의하여 문자열을 출력한다.https://www.acmicpc.net/problem/30033003번 킹, 퀸, 룩, 비숍, 나이트, 폰 나의 풀이#include #include using namespace std;int main(){ // 킹, 퀸, 룩, 비숍, 나이트, 폰 개수 // 1, 1, 2, 2, 2, 8 이 정상 vector v{ 1, 1, 2, 2, 2, 8 }; vector iv; int a; while (cin >> a) iv.push_back(a); for (int i = 0; i 원래 필요한 개수를 킹, 퀸..

코테 2024.09.25

백준 단계별로 풀어보기 (5) - 문자열

https://www.acmicpc.net/problem/2786627866번 문자와 문자열 나의 풀이#include #include using namespace std;int main(){ string str; cin >> str; int a; cin >> a; cout 단어와 정수가 주어졌을 때, 주어진 단어의 주어진 정수 번째 글자를 출력하는 프로그램이다.string 객체는 [] operator 를 지원하기 때문에 string에 단어를 입력하고, []를 통해서 원하는 글자에 접근했다.https://www.acmicpc.net/problem/27432743번 단어 길이 재기 나의 풀이#include #include int main(){ std::string str; std::cin >> str; st..

코테 2024.09.09