백준 2609번 C/C++
2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 최대공약수와 최소공배수 문제를 보았을 때, 내가 알던 식으로 소인수분해를 하며 풀면 안될 것 같다는 생각이 들었다. 그래서 찾아보게 된 것이 유클리드 호제법이다. 유클리드 호제법 유클리드 호제법을 통해 최대공약수를 구할 수 있는데, 이것에 대한 설명은 다음과 같다. 숫자가 a와 b가 있고, a를 b로 나눈 나머지를 r이라고 한다. (여기서 a ≥ b이고, r은 0≤ r < b인 정수) a와 b의 최대 공약수를 (a,b)라고 하면, 다음이 성립한다. (a, b) = (b, r) 예시로 1071과 1029에 대한 예시를 위와 같은 ..
2020.08.20
함수 내부에 크기가 너무 큰 배열 선언 시 메모리 초과
함수 내부에 사이즈가 큰 배열선언 이번에 알고리즘 문제를 풀면서 직면했던 문제인데, 코드를 아무리 실행해도 실행되지 않았다. 이유를 찾아본 결과 함수 내부에 너무 큰 크기의 배열을 선언했기 때문인데, 지속적으로 함수가 호출되면서 큰 사이즈의 배열의 메모리가 다시 재할당되는 것이 성능에 문제를 주기 때문이다. 그렇기에 내가 사용한 IDE는 Visual Studio였는데, 함수안에 큰 사이즈의 배열이 선언되면 컴파일러가 프로그램이 실행되지 않도록 한다. 이 문제는 main함수에서도 똑같이 적용된다. C 프로그래밍 입문/데이터 배열 - 위키책 데이터 배열[+/-] 서너 개의 데이터를 다룰 때엔 변수를 이용하면 충분히 데이터를 저장하거나 관리하는 것이 가능하지만 수십~수백의 데이터를 다룬다던가, 수천~수만의 데..
2020.08.20
백준 2750번 C/C++
#include #include #include int main() { int n, temp; std::cin >> n; std::vector v(n); for (int i = 0; i > v[i]; } for (int i = 0; i v[j + 1]) { temp = v[j]; v[j] = v[j + 1]; v[j + 1] = temp; } } } for (int i = 0; i < n; i++) { std::cout
2020.08.07
no image
백준 1018번 체스판 다시 칠하기[C/C++]
1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제 해결법 해결법1 흰색으로 시작하는 체스판, 검은색으로 시작하는 체스판 배열을 각각 만들어서 두 배열에서 각각 8x8로 자른 판의 count를 세고 count를 비교하여 더 작은쪽을 출력한다. #include #include #include #include using namespace std; int m, n; int result = 64; //250; string board[50]; // == char board[50][50]; string wb[8..
2020.08.06
no image
2020년 부산 게임 개발자 컨퍼런스 다녀왔습니다!
이번에 BGC에서 처음 개최한 부산 게임 개발자 컨퍼런스를 다녀왔다. 생각보다 도움이 됐던 부분이 너무 많아 글로 정리해서 남기려고 한다. 첫번째 발표 - 플레이하드 신중혁 우선 첫 번째 발표자는 레드브로즈의 개발사 플레이하드의 신중혁 대표님이었다. 첫 번째 강연에서 가장 강조되었던 것은 마케팅이었다. 처음에는 마케팅과 같은 것은 생각치 않고, 정말 힘들고 가난하게 게임 개발을 해오셨었다. 수술을 해야하는데, 돈이 없어서 수술을 포기해야 할 정도. 어떤 게임을 만들어도 잘되었던 것이 하나도 없고, 여러개를 만들어봤지만 제대로 런칭이 되었던 것도 없었다. 그러다가 자신이 보던 유튜브 영상과 그 때 당시 모바일 게임의 트렌드에서 유행했던 하이퍼캐주얼 장르를 보며 만들게 되었고 한다. 모든 측면의 경험이 부족..
2020.07.27
백준 2160번 C/C++
2160번: 그림 비교 N(2≤N≤50)개의 그림이 있다. 각각의 그림은 5×7의 크기이고, 두 가지 색으로 되어 있다. 이때 두 가지의 색을 각각 ‘X’와 ‘.’으로 표현하기로 하자. 이러한 그림들이 주어졌을 때, 가장 비슷�� www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #define MAX 987654321 #include int main() { int n; int answer = MAX; int firstPic, secondPic; char pic[5][7][50]; scanf("%d", &n); //scanf 할 때 엔터까지 들어가서 printf할때도 자동엔터가 되는거구나. for (int loop = 0; loop < n; loop++) { for (i..
2020.07.27
no image
백준 10163번 C/C++
10163번: 색종이 평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘 www.acmicpc.net 문제를 설계하면서 풀어보는 습관을 들여보기로 했다. 문제 N장의 색종이가 주어진 위치에 차례로 놓일 경우, 각 색종이가 보이는 부분의 면적을 구해라. 입력 1. 색종이 개수 (1
2020.07.26
백준 1924번 C/C++
1924번: 2007년 첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. www.acmicpc.net 내 풀이는 다음과 같다. #define _CRT_SECURE_NO_WARNINGS #include int main() { int month, day, totalDay = 0; scanf("%d %d", &month, &day); for (int i = 1; i < month+1; i++) { if (i == 3) { totalDay += 28; } else if (i == 5 or i == 7 or i == 10 or i == 12) ..
2020.07.16
백준 11721번 C/C++
11721번: 열 개씩 끊어 출력하기 첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다. www.acmicpc.net 이 문제를 풀수 있는 방식은 이것들이 있다! 방법 1. #define _CRT_SECURE_NO_WARNINGS #include #include int main() { char str[101]; scanf("%s", str); for (int i = 0; i < strlen(str); i++) { printf("%c", str[i]); if ((i+1) % 10 == 0) { printf("\n"); } } return 0; } 방법 2. #define _CRT_SECURE_NO_WARNING..
2020.07.15
백준 10951번
10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 혹시나 해서 입출력 관련 문제를 풀어봤는데, 정말 못푸는 문제가 나와서 놀랐다. 분명 배웠던 기억이 있었는데, 어느 새인가 기억저편으로 날라갔다..ㅠㅠ... 충격을 뒤로 하고 내용을 정리하자면, 내가 몰랐던 내용은 EOF인데, 이에 대한 간략한 설명이다. EOF(End of File)이란 파일의 끝을 표현하기 위한 '상수'이고, -1의 값을 가진다. 그래서 파일의 끝을 만났을 때, 매크로로 정의된 EOF 값을 리턴한다. scanf는 사실 정수형을 반환해주는 반환함수라고 하는데, 평소에는 포맷 형식 갯수를 반환하는데, 파일 끝에 도달하면 EOF라는 값을 반환해준다고 한다. ..
2020.07.13
빈센트 반 고흐
열심히 노력하다가 갑자기 나태해지고, 잘 참다가 조급해지고, 희망에 부풀었다가 절망에 빠지는 일을 또 다시 반복하고 있다. 그래도 계속해서 노력한다면 수채화를 더 잘 이해할 수 있겠지. 그게 쉬운 일이었다면, 그 속에서 아무런 즐거움도 얻을 수 없었을 것이다. 그러니 계속해서 그림을 그려야겠다. 습작에의 몰두 18821월 7~8일(동생 테오에게 보내는 편지 일부 중) -빈센트 반고흐-
2020.07.13
백준 1259번
https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 문제 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 �� www.acmicpc.net 앞, 뒤 어디로 읽어도 똑같이 읽히는 수를 팰린드롬수라고 한다. 위 문제를 해결한 나의 방식은 다음과 같다. #include #include #include #define TRUE 1 using namespace std; int main() { int size; int correct = 0; string str; vector front; vector back; while (TRUE) {..
2020.07.13