728x90
[백준알고리즘] 10250번: ACM 호텔 -Python
C++언어 정리하기 - cout과 cin : 네이버 블로그 (naver.com)
사실상 \(w\)는 그다지 필요하지 않다.
\(h\)로 나눈 나머지로 층을 구하고,\(h\)로 나눈 몫으로 호실을 구하면 된다.
다만 출력할 때, 호수가 한자리일 경우에는 01, 02와 같이 앞에 0을 패딩 해주어야 한다. 따라서 아래처럼 패딩을 해주었다.
\({ 인덱스:[패딩값][크기]d }\) 로 10진수 상태로 항상 \([크기]\)의 길이가 되도록 패딩을 해주었다.
for _ in range(int(input())):
h, w, n = map(int, input().split())
d = n // h + 1
floor = n % h
if floor == 0:
d -= 1
floor = h
print('{0}{1:02d}'.format(floor, d))
다음은 C++ 코드이다.
층수가 아닌 호수를 가리킬 때에는 항상 두 자리 출력을 해야 해서 이 부분을 찾아보았다.
출력 길이를 맞춰주는 함수는 precision
과 width
가 있었고 각각을 자유롭게 사용할 수 있는 주변 기능들이 있었다.
precision
의 경우에는 한 번 설정 값을 해제하지 않는 이상 유지가 되는 성질이 있어 호수 표시를 위해 2칸 설정을 한다면 층수 표시에서는 항상 설정을 해제하는 과정이 필요하다.
반면, width
의 경우에는 한 번 설정한 값이 그다음 출력에만 영향을 주기 때문에, 나는 width
를 사용해서 문제를 풀었다.
width
로 출력 크기를 맞추면서, 동시에 패딩 값을 설정해줘야 했다. 나는 cout
의 fill
을 사용했는데, fill
의 경우에는 width
와 달리 한 번 설정한 값이 계속 유지가 된다.
따라서 fill
은 main 함수에서 한 번만 호출해서 패딩 값을 설정했다.
#include <iostream>
void solve(void);
int main(void)
{
int test_case;
std::cin >> test_case;
std::cout.fill('0');
for (int t = 0; t < test_case; t++)
solve();
return 0;
}
void solve(void)
{
int h, w, n;
std::cin >> h >> w >> n;
int q, r;
q = int(n / h) + 1;
r = n % h;
if (r == 0)
{
q--;
r = h;
}
std::cout << r;
std::cout.width(2);
std::cout << q << std::endl;
return;
}
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 2309번: 일곱 난쟁이 -Python (0) | 2020.04.02 |
---|---|
[백준알고리즘] 1011번: Fly me to the Alpha Centauri -Python, C++ (0) | 2020.04.01 |
[백준알고리즘] 2839번: 설탕 배달 -Python, C++ (0) | 2020.03.31 |
[백준알고리즘] 2869번: 달팽이는 올라가고 싶다 -Python, C++ (0) | 2020.03.19 |
[백준알고리즘] 1712번: 손익분기점 -Python, C++ (0) | 2020.03.19 |