์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/BOJ_Java

[BOJ/Step8] 10250 : ACM ํ˜ธํ…” (JAVA)

NaNaRin๐Ÿ™ƒ 2021. 1. 17. 12:05

www.acmicpc.net/problem/10250

 

10250๋ฒˆ: ACM ํ˜ธํ…”

ํ”„๋กœ๊ทธ๋žจ์€ ํ‘œ์ค€ ์ž…๋ ฅ์—์„œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ์ž…๋ ฅ์€ T ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ T ๋Š” ์ž…๋ ฅ์˜ ๋งจ ์ฒซ ์ค„์— ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋Š” ํ•œ ํ–‰์œผ๋กœ์„œ H, W, N, ์„ธ ์ •์ˆ˜

www.acmicpc.net


๋ฌธ์ œ

ACM ํ˜ธํ…” ๋งค๋‹ˆ์ € ์ง€์šฐ๋Š” ์†๋‹˜์ด ๋„์ฐฉํ•˜๋Š” ๋Œ€๋กœ ๋นˆ ๋ฐฉ์„ ๋ฐฐ์ •ํ•˜๊ณ  ์žˆ๋‹ค. ๊ณ ๊ฐ ์„ค๋ฌธ์กฐ์‚ฌ์— ๋”ฐ๋ฅด๋ฉด ์†๋‹˜๋“ค์€ ํ˜ธํ…” ์ •๋ฌธ์œผ๋กœ๋ถ€ํ„ฐ ๊ฑธ์–ด์„œ ๊ฐ€์žฅ ์งง์€ ๊ฑฐ๋ฆฌ์— ์žˆ๋Š” ๋ฐฉ์„ ์„ ํ˜ธํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์ง€์šฐ๋ฅผ ๋„์™€ ์ค„ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ฆ‰ ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ ๋Œ€๋กœ ํ˜ธํ…” ์ •๋ฌธ์œผ๋กœ๋ถ€ํ„ฐ ๊ฑท๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์งง๋„๋ก ๋ฐฉ์„ ๋ฐฐ์ •ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ ์ž ํ•œ๋‹ค.

๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ˜ธํ…”์€ ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ฐ ์ธต์— W ๊ฐœ์˜ ๋ฐฉ์ด ์žˆ๋Š” H ์ธต ๊ฑด๋ฌผ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž (1 ≤ H, W ≤ 99). ๊ทธ๋ฆฌ๊ณ  ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž(๊ทธ๋ฆผ 1 ์ฐธ๊ณ ). ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ํ˜ธํ…”์„ H × W ํ˜•ํƒœ ํ˜ธํ…”์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ˜ธํ…” ์ •๋ฌธ์€ ์ผ์ธต ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ ๋ฐ”๋กœ ์•ž์— ์žˆ๋Š”๋ฐ, ์ •๋ฌธ์—์„œ ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” ๋ฌด์‹œํ•œ๋‹ค. ๋˜ ๋ชจ๋“  ์ธ์ ‘ํ•œ ๋‘ ๋ฐฉ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” ๊ฐ™์€ ๊ฑฐ๋ฆฌ(๊ฑฐ๋ฆฌ 1)๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ˜ธํ…”์˜ ์ •๋ฉด ์ชฝ์—๋งŒ ๋ฐฉ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

๊ทธ๋ฆผ 1. H = 6 ์ด๊ณ  W = 12 ์ธ H × W ํ˜ธํ…”์„ ๊ฐ„๋žตํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ฆผ

๋ฐฉ ๋ฒˆํ˜ธ๋Š” YXX ๋‚˜ YYXX ํ˜•ํƒœ์ธ๋ฐ ์—ฌ๊ธฐ์„œ Y ๋‚˜ YY ๋Š” ์ธต ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  XX ๋Š” ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ์—์„œ๋ถ€ํ„ฐ ์„ธ์—ˆ์„ ๋•Œ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰, ๊ทธ๋ฆผ 1 ์—์„œ ๋น—๊ธˆ์œผ๋กœ ํ‘œ์‹œํ•œ ๋ฐฉ์€ 305 ํ˜ธ๊ฐ€ ๋œ๋‹ค.

์†๋‹˜์€ ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ๋ฅผ ํƒ€๊ณ  ์ด๋™ํ•˜๋Š” ๊ฑฐ๋ฆฌ๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๋‹ค๋งŒ ๊ฑท๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์„ ๋•Œ์—๋Š” ์•„๋ž˜์ธต์˜ ๋ฐฉ์„ ๋” ์„ ํ˜ธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 102 ํ˜ธ ๋ฐฉ๋ณด๋‹ค๋Š” 301 ํ˜ธ ๋ฐฉ์„ ๋” ์„ ํ˜ธํ•˜๋Š”๋ฐ, 102 ํ˜ธ๋Š” ๊ฑฐ๋ฆฌ 2 ๋งŒํผ ๊ฑธ์–ด์•ผ ํ•˜์ง€๋งŒ 301 ํ˜ธ๋Š” ๊ฑฐ๋ฆฌ 1 ๋งŒํผ๋งŒ ๊ฑธ์œผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐ™์€ ์ด์œ ๋กœ 102 ํ˜ธ๋ณด๋‹ค 2101 ํ˜ธ๋ฅผ ๋” ์„ ํ˜ธํ•œ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•  ํ”„๋กœ๊ทธ๋žจ์€ ์ดˆ๊ธฐ์— ๋ชจ๋“  ๋ฐฉ์ด ๋น„์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์— ์ด ์ •์ฑ…์— ๋”ฐ๋ผ N ๋ฒˆ์งธ๋กœ ๋„์ฐฉํ•œ ์†๋‹˜์—๊ฒŒ ๋ฐฐ์ •๋  ๋ฐฉ ๋ฒˆํ˜ธ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์ฒซ ๋ฒˆ์งธ ์†๋‹˜์€ 101 ํ˜ธ, ๋‘ ๋ฒˆ์งธ ์†๋‹˜์€ 201 ํ˜ธ ๋“ฑ๊ณผ ๊ฐ™์ด ๋ฐฐ์ •ํ•œ๋‹ค. ๊ทธ๋ฆผ 1 ์˜ ๊ฒฝ์šฐ๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด, H = 6์ด๋ฏ€๋กœ 10 ๋ฒˆ์งธ ์†๋‹˜์€ 402 ํ˜ธ์— ๋ฐฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

์ž…๋ ฅ

ํ”„๋กœ๊ทธ๋žจ์€ ํ‘œ์ค€ ์ž…๋ ฅ์—์„œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ์ž…๋ ฅ์€ T ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ T ๋Š” ์ž…๋ ฅ์˜ ๋งจ ์ฒซ ์ค„์— ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋Š” ํ•œ ํ–‰์œผ๋กœ์„œ H, W, N, ์„ธ ์ •์ˆ˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ ํ˜ธํ…”์˜ ์ธต ์ˆ˜, ๊ฐ ์ธต์˜ ๋ฐฉ ์ˆ˜, ๋ช‡ ๋ฒˆ์งธ ์†๋‹˜์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค(1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W). 

 

์ถœ๋ ฅ

ํ”„๋กœ๊ทธ๋žจ์€ ํ‘œ์ค€ ์ถœ๋ ฅ์— ์ถœ๋ ฅํ•œ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋งˆ๋‹ค ์ •ํ™•ํžˆ ํ•œ ํ–‰์„ ์ถœ๋ ฅํ•˜๋Š”๋ฐ, ๋‚ด์šฉ์€ N ๋ฒˆ์งธ ์†๋‹˜์—๊ฒŒ ๋ฐฐ์ •๋˜์–ด์•ผ ํ•˜๋Š” ๋ฐฉ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ

2

6 12 10

30 50 72

 

์˜ˆ์ œ ์ถœ๋ ฅ

402

1203


ํ’€์ด

1. ํ˜ธํ…”์€ ์†๋‹˜์—์„œ 1์ธต 1ํ˜ธ, 2์ธต 1ํ˜ธ, … , h์ธต 1ํ˜ธ, 1์ธต 2ํ˜ธ, 2์ธต 2ํ˜ธ, … ์ˆœ์œผ๋กœ ๋ฐฉ์„ ๋ฐฐ์ •ํ•œ๋‹ค. ์ฆ‰, ๋งจ ์™ผ์ชฝ๋ถ€ํ„ฐ ์•„๋ž˜์—์„œ ์œ„๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

2. ์ธต์€ n%h๊ฐ€ ๋œ๋‹ค. ํ•˜์ง€๋งŒ n%h๊ฐ€ 0์ด ๋  ๋•Œ๋Š” h๊ฐ’์ด ์ธต์ด ๋œ๋‹ค. 

3. ํ˜ธ์ˆ˜๋Š” n/h+1์ด ๋œ๋‹ค. ํ•˜์ง€๋งŒ n%h๊ฐ€ 0์ด ๋  ๋•Œ๋Š” n/h๊ฐ€ ํ˜ธ์ˆ˜๊ฐ€ ๋œ๋‹ค.

4. ์ธต๊ณผ ํ˜ธ์ˆ˜๋ฅผ ํฌ๋งท์— ๋งž๊ฒŒ ์ถœ๋ ฅํ•œ๋‹ค.

   => format() ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ

 

import java.io.*;
import java.util.StringTokenizer;

public class B10250 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int t = Integer.parseInt(br.readLine());
		
		for(int i = 0; i < t; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int h = Integer.parseInt(st.nextToken());
			int w = Integer.parseInt(st.nextToken());
			int n = Integer.parseInt(st.nextToken());
			
			if(n%h == 0) {
				bw.write(Integer.toString(h));
				bw.write(String.format("%02d", n/h));
			} else {
				bw.write(Integer.toString(n%h));
				bw.write(String.format("%02d", n/h+1));
			}
			bw.newLine();
		}
		bw.flush();
	}
}