BOJ - 행렬 곱셈 2740
·
코딩테스트
해결방법먼저 동적으로 이차원 배열을 입력받아야 하기 때문에 이차원 벡터를 선언해줘야 한다.행렬을 입력받는것은 쉬우니 생략한다.행렬 곱을 하는 과정은 다음과 같다. 첫번째 행렬의 첫 번째 행의 숫자를 두번 째 행렬의 첫번째 열의 모든 숫자들과 곱하고 그 값을 더해준다. 행렬은 다음처럼 계산이 진행된다.따라서 우리가 해줘야 할 것은 행렬 곱의 크기인 N*K 사이즈의 배열을 만들고, 위의 그림처럼 각 배열마다 하나씩 연산을 더해주는 부분이다. 정답 코드#include #include using namespace std;int main(){ int N, M; cin >> N >> M; vector> A(N, vector(M)); for (int i = 0; i > A[i][j]; } } int C, K; ci..
BOJ - 연도 진행바 1340
·
코딩테스트
해결방법먼저 monthDay 배열을 보면, 각 월의 날수를 배열로 저장했음을 알 수 있다.나중에 map을 통해 월을 입력받으면 그 월을 숫자로 변환하여 monthDay의 숫자를 사용하는 방식으로 활용한다. YearPassed 함수는 윤년을 확인하는 함수로, 연도를 4로 나눠서 0이거나 100으로 나눠서 0은 아닌데 400으로는 0이 된다면 윤년이 되는 방식이다. monthLeft 함수는 입력된 월 이전까지의 누적일수를 구하는 함수이다. 예를 들어 May가 입력되었다면 4월까지의 일수를 구하게 된다. 여기에 만약 윤년인 경우 1일을 추가하는 방식으로 계산한다. 나머지 입력을 받는 부분과 진행도를 계산하는 것은 매우 간단하니 넘어가도록 하겠다. 정답 코드#include #include #include #in..
BOJ - 나무 조각 2947
·
코딩테스트
해결방법버블 정렬의 일종이라고 생각하면 쉽게 풀 수 있다.맨 앞에서부터 바로 옆의 숫자와 비교하고 교환하는 식으로 생각하면 편하다. 정답 코드#include using namespace std;void printArray(int arr[], int size){ for (int i = 0; i > arr[i]; } while (true) { bool Swap = false; for (int i = 0; i arr[i + 1]) { swap(arr[i], arr[i + 1]); Swap = true; printArray(arr, 5); } ..
BOJ - TV 크기 1297
·
코딩테스트
해결방법대각선이란 피타고라스 정리를 이용하여 그 값을 구할수 있다. 여기서는 비율을 알고 있기 때문에 비율을 가지고 대각선의 비율을 구할 수 있다. 그 값을 이용하여 실제 높이와 너비를 구하면 된다.또한 floor 함수를 이용하여 소수점이 나온다면 버림을 해준다. 정답 코드#include #include using namespace std;int main(){ int D, H, W; cin >> D >> H >> W; double scale = D / sqrt(H * H + W * W); int Height = floor(H * scale); int Width = floor(W * scale); cout
BOJ - 종이접기 16504
·
코딩테스트
해결방법문제를 반으로 접고, 변수에 저장하고... 하는 것보다 그냥 처음부터 전부 더하는게 훨씬 빠르고 정확해서 그렇게 만들었다.추후 실력이 더 늘어난다면 한번 정석?대로 푸는 방식을 도전해봐야겠다... 정답 코드#include using namespace std;int main(void){ int N = 0; long long Ent = 0, K; cin >> N; for (int i = 0; i > K; Ent += K; } } cout
BOJ - 미국 스타일 2712
·
코딩테스트
해결방법이 문제또한 핵심은 소수점 넷째 자리까지 어떻게 출력하는가 이다. setprecision() 함수를 사용하여 처리한다. 정답 코드#include #include using namespace std;int main(){ int T; float SI; string Str; cin >> T; for (int i = 0; i > SI >> Str; if (Str == "kg") { SI *= 2.2046f; Str = "lb"; } else if (Str == "lb") { SI *= 0.4536f; Str = "kg"; } ..