```
백준 15700번 타일채우기4 C++ 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 15700번 풀이
- 타일채우기
https://www.acmicpc.net/problem/15700
15700번: 타일 채우기 4
첫째 줄에 N과 M이 주어진다. (1 ≤ N, M ≤ 1,000,000,000)
www.acmicpc.net
백준 15700번은
난이도 쉬움 등급의 문제로서
가로 N 세로 M 크기의 벽에
가로 1 세로 2 혹은 가로 2 세로 1 인 1 X 2 타일을 채우려 하는 경우
겹치지 않게 놓으면 최대 몇 개를 넣을 수 있는 지 구하는 단순 수학문제이다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
전체 크기가 어느 한쪽이라도 짝수이면
정확하게 타일을 다 넣을수 있다.
따라서 N * M / 2가 될것이다.
전체 크기가 어느 한쪽이라도 짝수가 아닌 경우
전체크기가 1인 경우에는 0일 것이고
N이 1이 아니면
N - 1 의 영역을 M 과 곱해서 나누기 2를 하고 남은 M 길이에 타일을 넣어주면 된다.
M의 경우도 동일하다.
아래의 그림을 보면 이해가 더 쉬울 것이다.


이를 코딩으로 표현하면 아래와 같다.
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <array>
#include <stack>
#include <queue>
#include <map>
#include <algorithm>
#include <numeric>
#include <cmath>
int main()
{
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
std::string inputStr;
std::getline(std::cin, inputStr);
std::stringstream ss(inputStr);
long long tempVal = 0;
ss >> tempVal;
const long long N = tempVal;
ss >> tempVal;
const long long M = tempVal;
long long Ans = 0;
if ((N % 2 == 0) || (M % 2 == 0))
{
Ans = (N * M) / 2;
}
else
{
if ((N == 1) && (M == 1))
{
Ans = 0;
}
else if (N != 1)
{
//Ans = (((N - 1) * M) + M)/ 2;
Ans = (N * M) / 2;
}
else //else if (M != 1)
{
//Ans = (((M - 1) * N) + N)/ 2;
Ans = (N * M) / 2;
}
}
std::cout << Ans;
}
Ans = (((N - 1) * M) + M)/ 2; 은
Ans = (N * M) / 2; 로 표현이 가능하기 때문에
답을 더 쉽게 쓰면
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <array>
#include <stack>
#include <queue>
#include <map>
#include <algorithm>
#include <numeric>
#include <cmath>
int main()
{
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
std::string inputStr;
std::getline(std::cin, inputStr);
std::stringstream ss(inputStr);
long long tempVal = 0;
ss >> tempVal;
const long long N = tempVal;
ss >> tempVal;
const long long M = tempVal;
long long Ans = (N * M) / 2;
std::cout << Ans;
}
이 된다.
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩하시길 바랍니다 ~ :)
참조 및 인용
C++ Primer
Introduction to Algorithms
https://codemasterkimc.tistory.com/35
C++ 이론을 배울수 있는 곳 정리
개요 C++을 배우는 책, 강의, 블로그, 링크 등을 공유합니다. (링크 및 간략한 설명을 하였으나 만약 원작자가 링크를 거는것을 원치 않을 경우 연락주시기 바랍니다.) 서적 https://www.amazon.com/Prime
codemasterkimc.tistory.com
https://codemasterkimc.tistory.com/50
300년차 개발자의 좋은 코드 5계명 (Clean Code)
이번 글을 통해 배워갈 내용 좋은 코드(Clean Code)를 작성하기 위해 개발자로서 생각해볼 5가지 요소를 알아보겠습니다. 개요 좋은 코드란 무엇일까요? 저는 자원이 한정적인 컴퓨터 세상에서 좋
codemasterkimc.tistory.com
'C++ > C++ 알고리즘' 카테고리의 다른 글
| 백준 11726번 2xn 타일링 C++ 구현해보기 (0) | 2021.09.11 |
|---|---|
| 백준 14852번 타일채우기3 C++ 구현해보기 (0) | 2021.09.11 |
| 백준 2780번 비밀번호 C++ 구현해보기 (0) | 2021.09.09 |
| 백준 20674번 통계자료 빼기 C++ 구현해보기 (0) | 2021.09.05 |
| 백준 20673번 C++ 구현해보기 (0) | 2021.09.05 |