Search

자리배정

주차
0
문제번호
10157
언어
C++
티어
실버
유형
구현
재귀
nj_Blog
nj_상태
다시 풀기
이해도
풀이
사람
이해도 2
13 more properties

Memo

좌표가 일반적인 문제들과 다르게 주어져서 헷갈리는 문제입니다.
간단한 코드로 다시 풀어보는 것이 권장되는 문제입니다.

Code

제출 날짜

@4/5/2021

메모리

2016 KB

시간

0 ms
#include <iostream> #include <cmath> int C, R, K; int col, row; int ans_y, ans_x; void input_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { input_faster(); std::cin >> C >> R; std::cin >> K; } void recursion(int x, int y, int val, bool dir) { if (col == 0 && row == 0) return ; if (!dir) // move row { y += row; val += std::abs(row); } else { x += col; val += std::abs(col); } if (val >= K) { if (!dir) { if (row > 0) y -= (val - K); else y += (val - K); } else { if (col > 0) x -= (val - K); else x += (val - K); } ans_y = y; ans_x = x; return ; } if (!dir && row < 0) row = -row - 1; else if (!dir && row > 0) row = -row + 1; else if (dir && col < 0) col = -col - 1; else if (dir && col > 0) col = -col + 1; recursion(x, y, val, !dir); } void solve() { row = R; col = C - 1; recursion(1, 0, 0, 0); } void print_val() { std::cout << ans_x << " " << ans_y; } int main() { input(); if (K > R * C) { std::cout << 0; return (0); } solve(); print_val(); return (0); }
C++
복사