[C++] 온도의 최대값
·
algorithms (C++)
📄문제 매일 아침 9시에 학교에서 측정한 온도가 어떤 정수의 수열로 주어졌을 때, 연속적인 며칠동안의 온도의 합이 가장 큰 값을 알아보고자 한다. 예를 들어, 다음과 같이 10일 간의 온도가 주어졌을 때, 3 -2 -4 -9 0 3 7 13 8 -3 모든 연속적인 이틀간의 온도의 합은 다음과 같다. 이때, 온도의 합이 가장 큰 값은 21이다. 매일 측정한 온도가 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 계산하는 프로그램을 작성하시오. ⬇️ 입력 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 위한 연속적인 ..
[C++] 카드게임
·
algorithms (C++)
📄문제 0부터 9까지의 숫자가 표시된 카드를 가지고 두 사람 A와 B가 게임을 한다. A와 B에게는 각각 0에서 9까지의 숫자가 하나씩 표시된 10장의 카드뭉치가 주어진다. 두 사람은 카드를 임의의 순서로 섞은 후 숫자가 보이지 않게 일렬로 늘어놓고 게임을 시작한다. 단, 게임 도중 카드의 순서를 바꿀 수는 없다. A와 B 각각이 늘어놓은 카드를 뒤집어서 표시된 숫자를 확인하는 것을 한 라운드라고 한다. 게임은 첫 번째 놓인 카드부터 시작하여 순서대로 10번의 라운드로 진행된다. 각 라운드에서는 공개된 숫자가 더 큰 사람이 승자가 된다. 승자에게는 승점 3점이 주어지고 패자에게는 승점이 주어지지 않는다. 만약 공개된 두 숫자가 같아서 비기게 되면, A, B 모두에게 승점 1 점이 주어진다. 10번의 라운..
[C++] 가위 바위 보
·
algorithms (C++)
📄문제 A, B 두 사람이 가위바위보 게임을 합니다. 총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다. 가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다. 예를 들어 N=5이면 다음과 같이 나옵니다. 회수 1 2 3 4 5 A 2 3 3 1 3 B 1 1 2 2 3 결과 A B A B D 두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요. ⬇️ 입력 첫 번째 줄에 게임 횟수인 자연수 N(1
[C++] 분노유발자
·
algorithms (C++)
📄문제 오늘은 수능이 끝난 다음날로 교장선생님은 1, 2학년 재학생들에게 강당에 모여 어벤져스 영화를 보여준다고 하여 학생들이 강당에 모였습니다. 강당의 좌석은 영화관처럼 계단형이 아니라 평평한 바닥에 의자만 배치하고 학생들이 앉습니다. 그런데 만약 앞자리에 앉은 키가 큰 학생이 앉으면 그 학생보다 앉은키가 작은 뒷자리 학생은 스크린이 보이지 않습니다. 한 줄에 앉은키 정보가 주어지면 뒷사람 모두의 시야를 가려영화 시청이 불가능하게 하는 분노유발자가 그 줄에 몇 명이 있는지 구하는 프로그램을 작성하세요. ⬇️ 입력 첫 줄에 한 줄에 앉은 학생수 N(3
[C++] 층간소음
·
algorithms (C++)
📄문제 T편한 세상 아파트는 층간소음 발생 시 윗집의 발뺌을 방지하기 위해 애초 아파트를 지을 때 바닥에 진동센서를 설치했습니다. 이 센서는 각 세대의 층간 진동소음 측정치를 초단위로 아 파트 관리실에 실시간으로 전송합니다. 그리고 한 세대의 측정치가 M값을 넘으면 세대호수와 작은 경보음이 관리실 모니터에서 울립니다. 한 세대의 N초 동안의 실시간 측정치가 주어지면 최대 연속으로 경보음이 울린 시간을 구하세요. 경보음이 없으면 -1를 출력합니다. ⬇️ 입력 첫 줄에 자연수 N(10 maxSec) maxSec = curSec; } else curSec = 0; } printf("%d", maxSec); } maxSec를 -1로 초기화하여 input이 M보다 크면 curSec를 1씩 증가시킵니다. 만약 cu..
[C++] 선생님 퀴즈
·
algorithms (C++)
📄문제 현수네 반은 학생이 N명 있습니다. 수업도중 선생님이 잠깐 자리를 비워야 하는데 그 동안 학생들이 떠들거나 놀지 않도록 각 학생들에게 퀴즈를 냈습니다. 선생님은 각 학생들에게 숫자가 적힌 카드를 줬습니다. 각 학생들은 1부터 자기 카드에 적힌숫자까지의 합을 구하는 퀴즈입니다. 선생님이 돌아와서 각 학생들의 답이 맞았는지 확인을 하려고 하는데 너무 힘들어서 여러분에게 자동으로 채점을 하는 프로그램을 부탁했습니다. 여러분이 선생님을 도와주세요. ⬇️ 입력 첫 줄에 반 학생수인 자연수 N(1
[C++] 아나그램(Anagram)
·
algorithms (C++)
📄문제 Anagram이란 두 문자열이 알파벳의 나열 순서를 다르지만 그 구성이 일치하면 두 단어는 아나그램이라고 합니다. 예를 들면 AbaAeCe 와 baeeACA 는 알파벳을 나열 순서는 다르지만 그 구성을 살펴보면 A(2), a(1), b(1), C(1), e(2)로 알파벳과 그 개수가 모두 일치합니다. 즉 어느 한 단어를 재배열하면 상대편 단어가 될 수 있는 것을 아나그램이라 합니다. 길이가 같은 두 개의 단어가 주어지면 두 단어가 아나그램인지 판별하는 프로그램을 작성하세요. 아나그램 판별시 대소문자가 구분됩니다. ⬇️ 입력 첫 줄에 첫 번째 단어가 입력되고, 두 번째 줄에 두 번째 단어가 입력됩니다. 단어의 길이는 100을 넘지 않습니다. AbaAeCe baeeACA ⬆️ 출력 두 단어가 아나그램..
[C++] 소수의 개수 (에라토스테네스의 체)
·
algorithms (C++)
📄문제 자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다. ℹ️ 조건 제한시간은 1초입니다. ⬇️ 입력 첫 줄에 자연수의 개수 N(2
[C++] 뒤집은 소수
·
algorithms (C++)
📄문제 N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다. 뒤집는 함수인 int reverse(int x) 와 소수인지를 확인하는 함수 bool isPrime(int x)를 반드시 작성하여 프로그래밍 한다. ⬇️ 입력 첫 줄에 자연수의 개수 N(3
[C++] 가장 많이 사용된 자릿수
·
algorithms (C++)
📄문제 N자리의 자연수가 입력되면 입력된 자연수의 자릿수 중 가장 많이 사용된 숫자를 출력하는 프로그램을 작성하세요. 예를 들어 1230565625라는 자연수가 입력되면 5가 3번 사용되어 가장 많이 사용된 숫자입니다. ℹ️ 조건 답이 여러 개일 경우 그 중 가장 큰 수를 출력하세요. ⬇️ 입력 첫 줄에 자연수가 입력됩니다. 자연수의 길이는 100을 넘지 않습니다. 1230565625 ⬆️ 출력 가장 많이 사용된 자연수를 출력합니다. 5 📝 풀이 #include int main() { int arr[10] = { 0, }; char numStr[101]; scanf_s("%s", numStr, sizeof(numStr)); for (int i = 0; i < numStr[i] != '\0'; ++i) +..
[C++] 숫자의 총 개수
·
algorithms (C++)
📄문제 자연수 N이 입력되면 1부터 N까지의 자연수를 종이에 적을 때 각 숫자는 몇 개 쓰였을까요? 예를 들어 1부터 15까지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5으로 총 21개가 쓰였음을 알 수 있습니다. 자연수 N이 입력되면 1부터 N까지 각 숫자는 몇 개가 사용되었는지를 구하는 프로그램을 작성하세요. ⬇️ 입력 첫 번째 줄에는 자연수 N(3
[C++] 자릿수의 합
·
algorithms (C++)
📄문제 N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 int digit_sum(int x)를 꼭 작성해서 프로그래밍 하세요. ⬇️ 입력 첫 줄에 자연수의 개수 N(3 digitSumMax) { answer = numInput; digitSumMax = digitSum; } } printf("%d", answer); } int digit_sum(int x) { int sum = 0; while (1) { sum += x % 10; x /= 10; if (x == 0) return sum; } } digit_sum 함수에서 각 자리수를 추출하여 sum에 더해 리턴합니다. 리턴한 값 digitSum..
[C++] 모두의 약수
·
algorithms (C++)
📄문제 자연수 N이 입력되면 1부터 N까지의 각 숫자들의 약수의 개수를 출력하는 프로그램을 작성하세요. 만약 N이 8이 입력된다면 1(1개), 2(2개), 3(2개), 4(3개), 5(2개), 6(4개), 7(2개), 8(4개) 와 같이 각 숫자의 약수의 개수가 구해집니다. 출력은 다음과 같이 1부터 차례대로 약수의 개수만 출력하면 됩니다. 1 2 2 3 2 4 2 4 ⬇️ 입력 첫 번째 줄에 자연수 N(5
[C++] 올바른 괄호
·
algorithms (C++)
📄문제 괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다. (())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다. ⬇️ 입력 첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다. (()(()))(() ()()(()()) ⬆️ 출력 첫 번째 줄에 YES, NO를 출력한다. NO YES 📝 풀이 #include #include int main() { char input[31]; scanf_s("%s", input, sizeof(input)); int left = 0, right = 0; int inputLen = strlen(input); // 괄호의 개수가 홀수라면? if (inputLen % 2 == 1) { ..
[C++] 영어단어 복구 / scanf 공백 포함 입력받기
·
algorithms (C++)
📄문제 현수의 컴퓨터가 바이러스에 걸려 영어단어가 뛰어쓰기와 대소문자가 혼합되어 표현된다. 예를 들면 아름다운 이란 뜻을 가지고 있는 beautiful 단어가 “bE au T I fu L” 과 같이 컴퓨터에 표시되고 있습니다. 위와 같이 에러로 표시되는 영어단어를 원래의 표현대로 공백을 제거하고 소문자화 시켜 출력하는 프로그램을 작성하세요. ℹ️ 조건 첫 줄에 바이러스에 걸린 영어단어가 주어진다. 바이러스에 걸린 영어단어의 길이(공백포함)는100을 넘지 않는다. 문자사이의 공백은 연속적으로 존재할 수 있습니다. 입력은 알파벳과 공백만 주어집니다. ⬇️ 입력 bE au T I fu L ⬆️ 출력 첫 줄에 소문자로 된 정상적인 영어단어를 출력한다. beautiful 📝 풀이 #include int main(..
[C++] 숫자만 추출
·
algorithms (C++)
📄문제 문자와 숫자가 섞여있는 문자열이 주어지면 그중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 만약 “t0e0a1c2her”에서 숫자만 추출하면 0, 0, 1, 2이고 이것을 자연수를 만들면 12가 됩니다. 즉 첫 자리 0은 자연수화 할 때 무시합니다. 출력은 12를 출력하고, 다음 줄에 12의 약수의 개수를 출력하면 됩니다. ℹ️ 조건 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다. ⬇️ 입력 첫 줄에 숫자가 섞인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다. g0en2Ts8eSoft ⬆️ 출력 첫 줄에 자연수를 출력하고, 두 번째 줄에 약수의 개수를 출력합니다. 28 6 📝 풀이 #include int m..
[C++] 나이 구하기
·
algorithms (C++)
📄문제 주민등록증의 번호가 주어지면 주민등록증 주인의 나이와 성별을 판단하여 출력하는 프로그램 을 작성하세요. 주민등록증의 번호는 -를 기준으로 앞자리와 뒷자리로 구분된다. 뒷자리의 첫 번째 수가 1이면 1900년대생 남자이고, 2이면 1900년대생 여자, 3이면 2000년대 생 남자, 4이면 2000년대생 여자이다. ℹ️ 조건 올해는 2019년이다. 해당 주민등록증 주인의 나이와 성별을 출력하시오. ⬇️ 입력 첫 줄에 주민등록증 번호가 입력한다. 780316-2376152 ⬆️ 출력 첫 줄에 나이와 성별을 공백을 구분으로 출력하세요. 성별은 남자는 M(man), 여자는 W(Woman)로 출력한다. 42 W 📝 풀이 #include int main(int argc, const char * argv[]) ..
[C++] 진약수의 합
·
algorithms (C++)
📄문제 자연수 N이 주어지면 자연수 N의 진약수의 합을 수식과 함께 출력하는 프로그램을 작성하시오. ℹ️ 조건 3 < N
[C++] 자연수의 합
·
algorithms (C++)
📄문제 자연수 A, B가 주어지면 A부터 B까지의 합을 수식과 함께 출력하시오. ℹ️ 조건 1 > B; // 입력 for (int i = A; i < B; ++i) { printf("%d + ", i); sum += i; } printf("%d = %d", B, sum += B); } A부터 B-1까지 반복하여 숫자와 '+' 문자열을 출력합니다. B-1까지 출력되면, B가 마지막이기에 B와 '=' 문자열을 출력한 후 합계를 출력합니다. C언어의 printf문을 사용하여 더욱 성능을 높였습니다.
[C++] 1부터 N까지 M의 배수합
·
algorithms (C++)
📄문제 자연수 N이 입력되면 1부터 N까지의 수 중 M의 배수합을 출력하는 프로그램을 작성하시오. ℹ️ 조건 3 N >> M; int i = M; int sum = 0; for (int i = 1; i > M; // 배수의 개수 int cnt = N / M; // 최소값 int min = 1; for (; min = 1; --max) if (max % M == 0) break; // 결과 (개수가 홀수인경우 중간 값 더해주기) int sum = (min + max) * (cnt / 2) + (cnt % 2 == 1 ? (min + max) / 2 : 0); // 결과 출력 cout > N >> M; // 배수의 개수 int cnt = N / M; // 최소값 int min = M; // 최대값 int m..
3D로 쉽게 만드는 메타버스 공간 제작 과정을 마치며
·
unity etc./lecture
📖 강의 목록아래는 강의 기간동안 진행한 강의 과목입니다.유니티 허브(Unity Hub)유니티 에디터(Unity Editor)카메라(Main Camera)광원(Light)물리엔진 - Collider, Rigidbody에셋 스토어(Asset Store)프리팹(Prefab)터레인(Terrain)오디오(Audio)파티클(Particle) - Confetti(컨페티) 효과 제작골프 게임 제작 실습캐릭터 애니메이션 - Mixamo 캐릭터캐릭터 애니메이션 - Mixamo 애니메이션캐릭터 애니메이션 - 애니메이터 컨트롤러캐릭터 애니메이션 - 애니메이터 컨트롤러 실습인터렉티브 콘텐츠 제작 실습 📃 강의 평가1점부터 7점까지의 항목의 개수는 278개입니다.받을 수 있는 최대 점수는 278* 7 = 1946점입니다.이..
[C++ WinAPI] 테트리스
·
my portfolio
이 게임은 C++ WinAPI를 이용하여 제작한 테트리스 게임입니다. 대학교 2학년 2학기에 스스로 공부를 하면서 제작 한 게임으로, WinAPI 슈팅 게임을 만든 후 작업한 게임입니다. 테트리스의 기본적인 규칙을 적용하여 제작한 게임입니다. WinAPI 슈팅 게임과 마찬가지로 Unity의 게임 프레임워크를 모방하여 제작하였습니다. 📜 게임 소개 게임 이름 플랫폼 개발 기간 개발 도구 테트리스 2021.09 ~ 2021.10 C++ (WinAPI) 📺 미리 보기 📒 기타 정보 · Github GitHub - Bonnate/WinAPI_TETRIS: Tetris using WinAPI Tetris using WinAPI. Contribute to Bonnate/WinAPI_TETRIS development..
[C++ WinAPI] 슈팅 게임
·
my portfolio
C++ WinAPI를 이용하여 두개의 슈팅 게임을 개발하였습니다. 대학교 2학년 2학기에 작업을 하였으며, 각각 대학교 과제와 스스로 공부를 하면서 제작 한 게임으로, Unity의 게임 프레임워크 구조를 이해하고 따라하여 만든 게임입니다. 📜 게임 소개 게임 이름 플랫폼 개발 기간 개발 도구 슈팅 게임 2021.10 ~ 2021.11 C++ (WinAPI) 📺 미리 보기 📒 기타 정보 · Github GitHub - Bonnate/WinAPI_Galaga_Project Contribute to Bonnate/WinAPI_Galaga_Project development by creating an account on GitHub. github.com github 페이지에 프로젝트 리포지트리가 업로드 되어있습..
[C++ Console] 오목 게임
·
my portfolio
이 게임은 C++로 구현하여 만든 콘솔 기반 오목 게임입니다. 대학교 과제를 통해 2학년 1학기에 처음 게임을 만들게 되었으며, 과제 요구사항에서 더욱 기능을 추가하여 방향키로 오목을 둘 위치를 정하고, 스페이스바를 이용하여 오목을 둡니다. 금수 규칙(33)을 검사하여 알을 둘 수 없는 등 기능을 추가하여 개발하였습니다. 📜 게임 소개 게임 이름 플랫폼 개발 기간 개발 도구 오목 게임 2021.04 ~ 2021.05 C++ (Console) 📺 미리 보기 📒 기타 정보 · Github GitHub - Bonnate/Cpp_OmokGame: Omok Omok. Contribute to Bonnate/Cpp_OmokGame development by creating an account on GitHub. g..
[C++ Console] 슈팅 게임
·
my portfolio
이 게임은 C++로 구현하여 만든 콘솔 기반 슈팅 게임입니다. 대학교 2학년 1학기에 과제를 통해 생애 처음으로 만든 실시간 기반의 게임입니다. 하나의 PC에서 로컬 2인 플레이를 지원하는 간단한 게임입니다. 📜 게임 소개 게임 이름 플랫폼 개발 기간 개발 도구 슈팅 게임 2021.04 ~ 2021.05 C++ (Console) 📺 미리 보기 📒 기타 정보 · Github GitHub - Bonnate/Cpp_Galaga_game: Galag Game Galag Game. Contribute to Bonnate/Cpp_Galaga_game development by creating an account on GitHub. github.com github 페이지에 프로젝트 리포지트리가 업로드 되어있습니다. ..
.OBJ 파일을 쉽게 수정하는 Tool (MeshWiz 1.0)
·
unity tools & functions
OBJ 파일을 읽어 크기, 회전 및 Verticles Quality를 쉽게 조절하고 OBJ 파일의 스크린샷과 GIF를 촬영할 수 있는 기능을 제공하는 MeshWiz를 Unity로 개발하여 공유합니다. 💬 서론 이 기능은 오픈소스를 활용하여 제작하였습니다. 유니티 프로젝트는 깃허브에 업로드 되어있으며, 무료로 사용이 가능합니다. GitHub - Bonnate/MeshWiz: A program that sets the size(scale), rotation, and pivot(to center) of the .obj file. A program that sets the size(scale), rotation, and pivot(to center) of the .obj file. - GitHub - Bonna..
[유니티] Edit 모드에서 물리를 이용해 오브젝트 배치
·
unity tools & functions
유니티의 Play Mode에서 활성화되는 유니티 물리 시뮬레이션을 Edit Mode에서 사용하여 리지드바디와 콜라이더를 이용하는 오브젝트들을 물리 시뮬레이션을 이용하여 자연스러운 배치가 가능합니다. Play Mode가 시작될 때 오브젝트가 끼거나 공간이 남아 불필요한 움직임을 미리 계산하여 오브젝트들의 안정적인 배치가 가능합니다. GitHub - Bonnate/Unity-Non-Playmode-Physics-Simulator: a unity tool designed to focus on the Simulation feature in edit mode a unity tool designed to focus on the Simulation feature in edit mode - GitHub - Bonnat..
[유니티] WAV. 파일의 decibel 조절 tool
·
unity tools & functions
효과음의 평균 db이 서로 달라 별도의 프로그램으로 조절해야하는 불편함이 있어 이 문제를 해결하기 위해 unity editor에서 wav 파일의 db을 손쉽게 조절할 수 있는 tool을 만들어 배포합니다. 📺 미리 보기 💬 서론 이 기능은 Github에 업로드 되어있습니다. Unity Editor 2021.3.5f1 및 2022.3.7f1에서 테스트 되었습니다. GitHub - Bonnate/Unity-WAV-Easy-Volume-Editor: Unity Editor extension designed for developers working with WAV files. Unity Editor extension designed for developers working with WAV files. - Git..
[유니티] 에셋의 이름을 편리하게 변경
·
unity tools & functions
유니티에서 Assets의 이름을 직관적이고 규칙적으로 관리하는것은 매우 중요합니다. 연속적인 같은 이름을 가지는 에셋들의 이름을 편리하게 지어주는 Tool을 구현하였습니다. 📺 미리 보기 📖 구현 내용 Project 폴더 내 에셋들의 이름을 변경할 수 있습니다. 하이어라키에 내 오브젝트들의 이름을 변경할 수 있습니다. 시작 인덱스 값을 지정하여 이 값부터 시작할 수 있습니다. (예시, 12부터 새롭게 넘버링) 하이어라키 오브젝트의 이름을 변경한 건에 대하여 undo가 가능합니다. ⚒️ 구현 Editor Tool로 구현하였습니다. · 구현 내용 #if UNITY_EDITOR using UnityEditor; using UnityEngine; public class EasyRenameWindow : Edit..
[유니티] 피해 효과 (Damage effect overlay)
·
unity game modules
플레이어가 적으로부터 피해를 받은경우 오버레이 캔버스에서 이를 시각적으로 표현하고, 체력이 낮은 경우 또한 이미지를 이용하여 시각적으로 사용자에게 상태를 보여줄 수 있습니다. 이 기능을 구현한 후 정리하였습니다. 📺 미리 보기 HTML 삽입 미리보기할 수 없는 소스 📖 구현 내용 플레이어가 피해를 받은 경우 HitOverlay() 함수를 호출하여 일시적인 피해 효과를 보여줍니다. 플레이어의 체력이 변경될경우 CheckHp() 함수를 호출하여 현재 체력의 비율을 검사해 낮은 체력 경고 이미지를 활성화 합니다. 낮은 체력 경고 이미지가 활성화된경우 여러개의 이미지를 서로 페이드하여 움직이는 이미지 효과를 연출합니다. ⚒️ 구현 체력 피해를 시각적으로 보여줄 매니저와 여러개의 이미지를 Lerp하여 페이드하는 ..
bonnate