# [Algorithm/JS] ๋ฐฑ์ค€ 10250๋ฒˆ ACM ํ˜ธํ…”

๐Ÿ”— ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ (opens new window)

# Question

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

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

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

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

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

# Input

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

# Output

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

# Example

# Input

2
6 12 10
30 50 72
1
2
3

# Output

402
1203
1
2

# Solution

# Solution 1 (์‹คํŒจ)

const [count, ...input] = require('fs')
  .readFileSync('dev/stdin')
  .toString()
  .trim()
  .split('\n');
input.map((a) => {
  const [H, W, N] = a.split(' ').map(Number);
  let yy = (N % H).toString(); // ์ธต
  let xx = Math.ceil(N / H).toString(); // ํ˜ธ
  if (xx.length == 1) xx = `0${xx}`;
  console.log(yy + xx);
});
1
2
3
4
5
6
7
8
9
10
11
12

yy ๋Š” ์ธต, xx ๋Š” ํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

N ๋ฒˆ์งธ ๋ฐฉ์˜ ์ธต(yy)์„ ๊ตฌํ•˜๋ ค๋ฉด N ์„ ์ธต์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

yy = N % H

๋ฐฉ์˜ ํ˜ธ์ˆ˜(xx)๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด N์„ ์ธต ์ˆ˜๋งŒํผ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค. ํ˜ธ ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€ ๋‚˜๋ˆˆ ๊ฐ’์ด ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์„ ๋•Œ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ๋ฐ˜์˜ฌ๋ฆผ์„ ํ•ด์ค˜์•ผํ•œ๋‹ค. (Math.ceil ๋ฉ”์†Œ๋“œ)

xx = Meth.ceil(N / H);

๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜ธ์ˆ˜๊ฐ€ ํ•œ ์ž๋ฆฌ์ˆ˜๋ผ๋ฉด 10์˜ ์ž๋ฆฌ๋ฅผ 0์œผ๋กœ ์ง€์ •ํ•ด์ค€๋‹ค.

์˜ˆ์ œ์˜ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์‹คํ–‰์‹œ์ผœ๋ณด์•˜์„ ๋•Œ ๋ฌธ์ œ์˜ ์ถœ๋ ฅ๊ฐ’๊ณผ ์ผ์น˜ํ•œ๋‹ค.

ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. x

๊ทธ๋Ÿฌ๋‚˜ ์œ„ ํ’€์ด๋Š” ์‹คํŒจํ•œ ํ’€์ด๋‹ค.

https://www.acmicpc.net/board/view/74683 (opens new window)

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฐ˜๋ก€๋ฅผ ์ฐพ์•˜๋‹ค. ์ถœ๋ ฅ๊ฐ’์ด ์ƒ์ดํ•œ ์ž…๋ ฅ๊ฐ’์ด ์žˆ์–ด ํ™•์ธํ•ด๋ณด๋‹ˆ

์ธต ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ธต์ด ๋˜๋ฉด yy ๊ฐ’์ด 0 ์ด ๋˜๋ฏ€๋กœ ๊ฐ€์žฅ ๋†’์€ ์ธต(H) ์œผ๋กœ ๋Œ€์ž…ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

# Solution 2 (์„ฑ๊ณต)

๋‹ค์‹œ ์‹œ๋„ํ•œ ํ’€์ด๋‹ค.

const [count, ...input] = require('fs')
  .readFileSync('../input.txt')
  .toString()
  .trim()
  .split('\n');
input.map((a) => {
  const [H, W, N] = a.split(' ').map(Number);
  let xx = Math.ceil(N / H); // ํ˜ธ
  let yy = N % H; // ์ธต
  if (yy === 0) yy = H;
  if (xx / 10 < 1) xx = `0${xx}`;
  console.log(`${yy}${xx}`);
});
1
2
3
4
5
6
7
8
9
10
11
12
13

์œ„์—์„œ ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ๋“ค๋„ ํ•จ๊ป˜ ์ˆ˜์ •ํ–ˆ๋‹ค.

์ธต ์ˆ˜๊ฐ€ ํ•œ ์ž๋ฆฌ ์ˆ˜์ž„์„ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ฌธ์ž์—ด์˜ length ๊ฐ€ ์•„๋‹Œ ์—ฐ์‚ฐ์œผ๋กœ ์ฐพ์•„๋ƒˆ๋‹ค.

10์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด 1๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ํ•œ ์ž๋ฆฌ ์ˆ˜๋ผ๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ํ•œ์ž๋ฆฌ ์ˆ˜๋ผ๋ฉด ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•ด ์ˆซ์ž ์•ž์— 0์„ ๋ถ™์—ฌ์คฌ๋‹ค. ์ถœ๋ ฅ๊ฐ’ ์—ญ์‹œ ๋ฐฑํ‹ฑ์„ ํ†ตํ•ด ๋ฌธ์ž์—ด๋กœ ํ•ฉ์ณค๋‹ค

์ •๋‹ต

Last Updated: 2022. 6. 5. ์˜คํ›„ 3:42:39