Skip to content

Latest commit

ย 

History

History
294 lines (203 loc) ยท 10.6 KB

File metadata and controls

294 lines (203 loc) ยท 10.6 KB

๊ตฌํ˜„

๊ตฌํ˜„ ๋…ธ์…˜ ์ •๋ฆฌ ๋ฒ„์ „

๐Ÿ“š ์•„์ด๋””์–ด๋ฅผ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ตฌํ˜„


  • ํ”ผ์ง€์ปฌ๋กœ ์Šน๋ถ€ํ•˜๊ธฐ โ‡’ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์— ๋Šฅ์ˆ™ํ•˜๊ณ  ์ฝ”๋“œ ์ž‘์„ฑ ์†๋„๊ฐ€ ๋น ๋ฅธ ์‚ฌ๋žŒ
  • ๊ตฌํ˜„ : ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •
  • ๊ตฌํ˜„ ๋ฌธ์ œ ์œ ํ˜•์€ ๋ชจ๋“  ๋ฒ”์œ„์˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ ์œ ํ˜•์„ ํฌํ•จํ•˜๋Š” ๊ฐœ๋…
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ์ต์ˆ™ํ•˜๊ฒŒ ํ•˜์ž

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€ ๋•Œ ๊ณผ์ •

  1. ์ƒ๊ฐํ•ด๋‚ธ ๋ฌธ์ œ ํ’€์ด ๋ฐฉ๋ฒ•์„ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ •ํ™•ํžˆ ๊ตฌํ˜„
  2. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•จ

๐Ÿ“ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ถ„์•ผ์—์„œ ๊ตฌํ˜„ ์œ ํ˜•์˜ ๋ฌธ์ œ๋ž€?

  1. ํ’€์ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ์‰ฌ์šฐ๋‚˜ ์†Œ์Šค์ฝ”๋“œ๋กœ๋Š” ์˜ฎ๊ธฐ๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ
  2. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•œ๋ฐ ์ฝ”๋“œ๊ฐ€ ์ง€๋‚˜์น  ๋งŒํผ ๊ธธ์–ด์ง€๋Š” ๋ฌธ์ œ
  3. ์‹ค์ˆ˜ ์—ฐ์‚ฐ์„ ๋‹ค๋ฃจ๊ณ , ํŠน์ • ์†Œ์ˆ˜์  ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ
  4. ์ ์ ˆํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ

๐Ÿ“ ๊ตฌํ˜„์˜ ์œ ํ˜•

  1. ์™„์ „ ํƒ์ƒ‰ : ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฃผ์ € ์—†์ด ๋‹ค ๊ณ„์‚ฐํ•˜๋Š” ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
  2. ์‹œ๋ฎฌ๋ ˆ์ด์…˜ : ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•œ ๋‹จ๊ณ„์”ฉ ์ฐจ๋ก€๋กœ ์ง์ ‘ ์ˆ˜ํ–‰ โ‡’ ๋ฐฉํ–ฅ ๋ฒกํ„ฐ๊ฐ€ ์ž์ฃผ ํ™œ์šฉ

๐Ÿ“ํ–‰๋ ฌ

  • 2์ฐจ์› ๊ณต๊ฐ„(๋ฐ˜๋ณต์ ์œผ๋กœ ์บ๋ฆญํ„ฐ ์ด๋™ ๋ฌธ์ œ)
  • ์—ด๊ณผ ํ–‰์ด ์žˆ์Œ
(0, 0) (0,1) (0, 2) (0, 3)
(1, 0) (1, 1) (1, 2) (1, 3)
(2, 0) (2, 1) (2, 2) (2, 3)
for i in range(5):
	for j in range(5):
		print('(', i, ',', j ')', end=' ')
print()
# ๋™ ๋ถ ์„œ ๋‚จ
dx = [0, -1, 0, 1] # ์„ธ๋กœ์ถ• ๊ธฐ์ค€์œผ๋กœ
dy = [1, 0, -1, 0]

# ํ˜„์žฌ ์œ„์น˜
x, y =1, 2

for i in range(4):
	# ๋‹ค์Œ ์œ„์น˜
	nx = x + dx[i]
	ny = y + dy[i]
	print(nx, ny) 

๋ถ€๊ฐ€์„ค๋ช… : ๋™์ชฝ์œผ๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด ์—ด์€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ํ–‰์€ ์ฆ๊ฐ€ํ•จ

EX. (1, 0) โ†’ (2, 0)

๐Ÿ“š ๊ตฌํ˜„ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ ์‚ฌํ•ญ


1. C/C++์—์„œ ๋ณ€์ˆ˜์˜ ํ‘œํ˜„ ๋ฒ”์œ„ - ์ •์ˆ˜ํ˜• int(4๋ฐ”์ดํŠธ) < int๋ณด๋‹ค ํฐ long long(8๋ฐ”์ดํŠธ) < BigInteger(ํด๋ž˜์Šค) : ๊ฐ€๋ณ€์ ์ด๋ฉฐ, ์ž๋ฃŒํ˜•์˜ ๋ฒ”์œ„๋Š” ์ œํ•œ ์—†์Œ - ํ•˜์ง€๋งŒ c++์˜ ๊ฒฝ์šฐ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉ

2. ํŒŒ์ด์ฌ - ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ž๋ฃŒํ˜• ์ง€์ •ํ•  ํ•„์š” ์—†์Œ, ๋งค์šฐ ํฐ ์ˆ˜์˜ ์—ฐ์‚ฐ ๋˜ํ•œ ๊ธฐ๋ณธ์œผ๋กœ ์ง€์› - ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜์˜ ์—ฐ์‚ฐ ๋•Œ๋ฌธ์— ๊ณ ๋ฏผ No! - but, ์‹ค์ˆ˜ํ˜• ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œ ํšจ์ˆซ์ž์— ๋”ฐ๋ผ์„œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์ด ๋‚˜์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ

  1. ํŒŒ์ด์ฌ์—์„œ ๋ฆฌ์ŠคํŠธ์˜ ๊ณ ๋ ค์‚ฌํ•ญโœจ
    1. ํŒŒ์ด์ฌ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์‹œ ๋ฆฌ์ŠคํŠธ ์ด์šฉ

    2. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌํ•ญ ๊ณ ๋ ค

      • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ 128~512MB๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์—ผ๋‘์— ๋‘๊ณ  ํ’€์–ด์•ผ ํ•จ
      • ํฌ๊ธฐ๊ฐ€ 1,000๋งŒ ์ด์ƒ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰ ์ œํ•œ์œผ๋กœ ํ’€์ง€ ๋ชปํ•จ
      • int ์ž๋ฃŒํ˜• ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
      ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜(๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด) ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
      1,000 ์•ฝ 4KB
      1,000,000 ์•ฝ 4MB
      10,000,000 ์•ฝ 40MB



๐Ÿ“š ์ฑ„์  ํ™˜๊ฒฝ


  • ์‹œ๊ฐ„ ์ œํ•œ : 1์ดˆ

  • ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ : 128MB

    โ‡’ ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ 1์ดˆ์— 2,000๋งŒ๋ฒˆ์˜ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋งŒ ์•Œ๋ฉด ๋จ

  • ์‹œ๊ฐ„ ์ œํ•œ : 1์ดˆ, ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜ : 100๋งŒ๊ฐœ

    โ‡’ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(NlogN) ์ด๋‚ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•จ

๐Ÿ’ก TIP) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ๋Š” ์‹œ๊ฐ„ ์ œํ•œ๊ณผ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋จผ์ € ํ™•์ธ ํ•œ ๋’ค, ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋А ์ •๋„์˜ ์‹œ๊ฐ„๋ณต์žก๋„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ธ์ง€ ์˜ˆ์ธก



๐Ÿ“š ๊ตฌํ˜„ ๋ฌธ์ œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•


  • ์‚ฌ์†Œํ•œ ์ž…๋ ฅ ์กฐ๊ฑด ๋“ฑ ๋ฌธ์ œ์—์„œ ๋ช…์‹œํ•ด์ฃผ๋ฉฐ, ๋ฌธ์ œ์˜ ๊ธธ์ด ํฐ ํŽธ
  • ํŒŒ์ด์ฌ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€ ์‹œ ์ข‹์€ ์  ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋น„๊ต
๊ตฌํ˜„ ๋‚œ์ด๋„ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ๊ฐ„
ํŒŒ์ด์ฌ ์‰ฌ์šด ํŽธ ๊ธด ํŽธ
PyPy ์‰ฌ์šด ํŽธ ๋‹ค์†Œ ์งง์€ ํŽธ
C/C++ ์–ด๋ ค์šด ํŽธ ์งง์€ ํŽธ
  • ํŒŒ์ด์ฌ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœ์‹œ, ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ์žฅ์น˜(GPU)๋ฅผ ์—ฐ๋™ํ•˜๋ฉฐ, ๋ฐ˜๋ณต์ ์ธ ํ–‰๋ ฌ ๊ณ„์‚ฐ์„ ์š”๊ตฌํ•˜๋Š” ๋ณต์žกํ•œ ์ˆ˜ํ•™ ๋ฌธ์ œ์‹œ C์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ด์ฌ ์ฝ”์–ด ์†Œํ”„ํŠธ์›จ์–ด ๋™์ž‘

  • BUT, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ™˜๊ฒฝ์—์„œ๋Š” GPU ์—ฐ์‚ฐ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†์Œ

  • ์ž๋™ ์ฑ„์ ๋ฐฉ์‹ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” PyPy3๋ฅผ ์ง€์›ํ•˜๋Š” ๊ณณ์ด ์ฆ๊ฐ€

    โ‡’ PyPy3๋ž€ ํŒŒ์ด์ฌ 3์˜ ๋ฌธ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์ง€์›, ํŒŒ์ด์ฌ3๋ณด๋‹ค ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

  • ํŒŒ์ด์ฌ ์ด์šฉ์‹œ API ๊ฐœ๋ฐœ ๋ฌธ์ œ๋ฅผ ๋ณด๋”๋ผ๋„ ์ƒ๋Œ€์ ์œผ๋กœ ๋ฌด๋‚œํ•˜๊ฒŒ ๋Œ€์ฒ˜ ๊ฐ€๋Šฅ

์˜ˆ์ œ 4-1 ์ƒํ•˜์ขŒ์šฐ


  • ๋ฌธ์ œ p.110 - ์—ฌํ–‰์ž A๋Š” N*N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ๊ณต๊ฐ„ ์œ„ ์„œ ์žˆ์Œ - ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„ ์ขŒํ‘œ (1,1), ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ์ขŒํ‘œ**(N, N)** - ์‹œ์ž‘ ์ขŒํ‘œ๋Š” ํ•ญ์ƒ (1,1) ์ƒ,ํ•˜,์ขŒ,์šฐ ์ด๋™ ๊ฐ€๋Šฅ - ๊ณ„ํš์„œ : ํ•˜๋‚˜์˜ ์ค„์— ๋„์–ด์“ฐ๊ธฐ ๊ธฐ์ค€์œผ๋กœ L,R,U,D ์ค‘ ํ•˜๋‚˜์˜ ๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ํ˜€ ์žˆ์Œ
  • L : ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™, R : ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™, U : ์œ„๋กœ ํ•œ ์นธ ์ด๋™, D : ์•„๋ž˜๋กœ ํ•œ ์นธ ์ด๋™

    • N*N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ๊ณต๊ฐ„์„ ๋ฒ—์–ด๋‚˜๋Š” ์›€์ง์ž„์€ ๋ฌด์‹œ
    • ๊ณ„ํš์„œ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์—ฌํ–‰์ž A๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๋„์ฐฉํ•  ์ง€์ ์˜ ์ขŒํ‘œ

    โ“ ์ž…๋ ฅ์กฐ๊ฑด

    • ์ฒซ์งธ ์ค„ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” N์ด ์ฃผ์–ด์ง„๋‹ค$(1\leq N \leq 100)$
    • ๋‘˜์งธ ์ค„์— ์—ฌํ–‰์ž A๊ฐ€ ์ด๋™ํ•  ๊ณ„ํš์„œ ๋‚ด์šฉ์ด ์ฃผ์–ด์ง„๋‹ค ($1 \leq ์ด๋™ํšŸ์ˆ˜ \leq 100)$

    โ“ ์ถœ๋ ฅ์กฐ๊ฑด

    • ์ฒซ์งธ ์ค„์— ์—ฌํ–‰๊ฐ€ A๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๋„์ฐฉํ•  ์ง€์ ์˜ ์ขŒํ‘œ(X,Y)๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅ

๐Ÿ‘Œ ๋ฌธ์ œ ํ•ด๊ฒฐ

  • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(N) ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋„‰๋„‰ํ•œ ํŽธ

  • ์ผ๋ จ์˜ ๋ช…๋ น์— ๋”ฐ๋ผ์„œ ๊ฐœ์ฒด๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ด๋™์‹œํ‚จ๋‹ค๋Š” ์  : ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์œ ํ˜•

  • ์ฐธ๊ณ  for๋ฌธ

    • ํŒŒ์ด์ฌ์—์„œ for๋ฌธ์€ ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ์ค‘์š”
    • for**[๋ณ€์ˆ˜1]** in [๋ฌธ์ž์—ด1, ๋ฆฌ์ŠคํŠธ1, ํŠœํ”Œ1]:
    arr = [1, 2, 3, 4, 5]
    for i in arr:
    	print(i)
# N์„ ์ž…๋ ฅ๋ฐ›๊ธฐ
n = int(input())
x, y = 1, 1 # ํ˜„์žฌ ์œ„์น˜
plans = input().split()

# L,R,U,D ๋ฐฉํ–ฅ์— ๋”ฐ๋ฅธ ์ด๋™ ์ด๋™, **๋ฐฉํ–ฅ ๋ฒกํ„ฐ**
dx = [0,0,-1,1] # x์ขŒํ‘œ๋Š” ์ขŒ์šฐ
dy = [-1,1,0,0] # y์ขŒํ‘œ๋Š” ์œ„์•„๋ž˜
move_types=['L', 'R', 'U', 'D']

# ์ด๋™ ๊ณ„ํš์„ ํ•˜๋‚˜์”ฉ ํ™•์ธ
for plan in plans : 
	# ์ด๋™ ํ›„ ์ขŒํ‘œ ๊ตฌํ•˜๊ธฐ
	for i in range(len(move_types)):
		if plan == move_types[i]:
			nx = x + dx[i]
			ny = y + dy[i]
		# ์˜์—ญ์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋ฌด์‹œ
		if nx<1 or ny<1 or nx>n or ny>n:
			countinue # ์ค‘๊ฐ„์— ๋ฉˆ์ถ”๊ณ  ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ€์ž
		# ์ด๋™ ์ˆ˜ํ–‰
		x, y = nx, ny

print(x, y)

โ‡’ ์ž…๋ ฅ๋ฐ›์„ ๊ฒŒ ๋ฌด์—‡์ธ์ง€ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์ฐจ๋ก€๋กœ ์ˆ˜ํ–‰ํ•ด ๋‚˜๊ฐ€๊ธฐ

๐Ÿ“ ์˜ˆ์ œ 4-2 ์‹œ๊ฐ


  • ๋ฌธ์ œ p.113

    • ์ •์ˆ˜ N์ด ์ž…๋ ฅ๋˜๋ฉด 00์‹œ 00๋ถ„ 00์ดˆ๋ถ€ํ„ฐ N์‹œ 59๋ถ„ 59์ดˆ๊นŒ์ง€์˜ ๋ชจ๋“  ์‹œ๊ฐ ์ค‘ 3์ด ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ๋˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ตฌํ•˜๊ธฐ

    โ“ ์ž…๋ ฅ์กฐ๊ฑด

    • ์ฒซ์งธ ์ค„์— ์ •์ˆ˜ N์ด ์ž…๋ ฅ๋œ๋‹ค$(0 \leq N \leq 23)$

    โ“ ์ถœ๋ ฅ์กฐ๊ฑด

    • 00์‹œ 00๋ถ„ 00์ดˆ๋ถ€ํ„ฐ N์‹œ 59๋ถ„ 59์ดˆ๊นŒ์ง€์˜ ๋ชจ๋“  ์‹œ๊ฐ ์ค‘ 3์ด ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ๋˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ตฌํ•˜๊ธฐ

๐Ÿ‘Œ ๋ฌธ์ œํ•ด๊ฒฐ

  • ๋ชจ๋“  ์‹œ๊ฐ์˜ ๊ฒฝ์šฐ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ชจ๋‘ ์…ˆ

  • ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 100,000๊ฐœ๊ฐ€ ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด ์—ฐ์‚ฐ ์ด์šฉํ•ด๋„ ์‹œ๊ฐ„ ์ œํ•œ 2์ดˆ์•ˆ์— ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ

  • ๋‹จ์ˆœํžˆ ์‹œ๊ฐ์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ํ™•์ธ โ‡’ ์™„์ „ ํƒ์ƒ‰ ์œ ํ˜•(๋น„ํšจ์œจ์ ์ด๋ผ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ ํฐ ๊ฒฝ์šฐ ์ž‘๋™ ์•ˆํ•  ์ˆ˜ ์žˆ์Œ)

  • ๊ฒฝ์šฐ์˜ ์ˆ˜ **24(์‹œ๊ฐ„)60(๋ถ„)60(์ดˆ) โ‡’ 3์ค‘ ๋ฐ˜๋ณต๋ฌธ ์ด์šฉ

  • ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์„œ ํ™•์ธ โ‡’ EX. 03์‹œ20๋ถ„23์ดˆ๋ผ๋ฉด โ€˜032023โ€™๋กœ ๋งŒ๋“ค์–ด์„œ ํ™•์ธ

  • ์ฐธ๊ณ  str

    ํŒŒ์ด์ฌ ๋ฌธ์ž์—ด ๋ณ€ํ™˜ - str()

# H๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ
h = int(input())

count = 0

# h๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€
for i in range(h + 1): 
	for j in range(60): # ์ž…๋ ฅ๋ฐ›๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„, ์ดˆ๋Š” 0๋ถ€ํ„ฐ 60๊นŒ์ง€๋กœ **๋ฒ”์œ„ ์„ค์ • ๋ฐ ์ฆ๊ฐ€ ํ•˜๊ฒŒ**
		for k in range(60):
		# ๋งค ์‹œ๊ฐ ์•ˆ์— 3์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ์นด์šดํŠธ ์ฆ๊ฐ€
			if '3' in str(i) + str(j) + str(k): # ์‹œ๊ฐ์„ **๋ฌธ์ž์—ด ๋ฐ”๊พผ ๋‹ค์Œ** ๋ฌธ์ž์—ด์— '3'์ด ํฌํ•จ๋๋Š”์ง€ ํ™•์ธ
				count+=1

print(count)



๐Ÿ“š ์‹ค์ „๋ฌธ์ œ ์™•์‹ค์˜ ๋‚˜์ดํŠธ


  • ๋ฌธ์ œ p.115 - ์™•์‹ค ์ •์› 8*8 ์ขŒํ‘œ ํ‰๋ฉด - ๋‚˜์ดํŠธ๋Š” ๋ง์„ ํƒ€๊ณ  ์žˆ๊ธฐ์— ์ด๋™์‹œ, L์ž ํ˜•ํƒœ๋กœ๋งŒ ์ด๋™ ๊ฐ€๋Šฅ, ์ •์› ๋ฐ–์œผ๋กœ ์ด๋™ ๋ถˆ๊ฐ€ 1. ์ˆ˜ํ‰์œผ๋กœ ๋‘ ์นธ ์ด๋™ํ•œ ๋’ค์— ์ˆ˜์ง์œผ๋กœ ํ•œ ์นธ ์ด๋™ 2. ์ˆ˜์ง์œผ๋กœ ๋‘ ์นธ ์ด๋™ํ•œ ๋’ค์— ์ˆ˜ํ‰์œผ๋กœ ํ•œ ์นธ ์ด๋™
โ“ ์ž…๋ ฅ์กฐ๊ฑด

- ์ฒซ์งธ ์ค„์— 8*8 ์ขŒํ‘œ ํ‰๋ฉด์ƒ์—์„œ ํ˜„์žฌ ๋‚˜์ดํŠธ๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์˜ ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋œ๋‹ค. ์ž…๋ ฅ ๋ฌธ์ž๋Š” a1์ฒ˜๋Ÿผ ์—ด๊ณผ ํ–‰์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค

โ“ ์ถœ๋ ฅ์กฐ๊ฑด

- ์ฒซ์งธ ์ค„์— ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ถœ๋ ฅ

๐Ÿ‘Œ ๋ฌธ์ œํ•ด๊ฒฐ

  • ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜์—ฌ ์ด๋™
  • ๋‹ค๋งŒ, 8*8ํ‰๋ฉด์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ๊ผผ๊ผผํžˆ ๊ฒ€์‚ฌ
  • ๋‚˜์ดํŠธ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ steps ๋ณ€์ˆ˜์— ๋„ฃ๋Š”๋‹ค๋ฉด
steps = [(-2, -1), (-1, -2), (1, -2), (-2, 1), (2, 1), (1, 2), (-1, 2), (-2, 1)]
  • <์ฝ”๋“œ>
# ํ˜„์žฌ ๋‚˜์ดํŠธ ์œ„์น˜ ๋ฐ›๊ธฐ
input_data = input()
# ๋‘ ๋ฒˆ์งธ ์œ„์น˜์˜ ์ˆซ์ž๋ฅผ ๋ฐ”๊พผ ๊ฒƒ์ด ํ–‰
row = int(input_data[1])
# ๋ฌธ์ž๋กœ ๋“ค์–ด์˜จ ๊ฐ’์„ ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๊ณ  
column = int(ord(input_data[0]))-int(ord('a')) + 1

# ๋‚˜์ดํŠธ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” 8๊ฐ€์ง€ ๋ฑกํ–ฅ ์ •์˜, dx, dy์‚ฌ์šฉํ•ด๋„ ๊ฐ€๋Šฅ
steps = [(-2, -1), (-1, -2), (1, -2), (-2, 1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

# 8๊ฐ€์ง€ ๋ฐฉํ–ฅ์— ๋Œ€ํ•˜์—ฌ ๊ฐ ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ
result = 0
for step in steps:
	# ์ด๋™ํ•˜๊ณ ์ž ํ•˜๋Š” ์œ„์น˜ ํ™•์ธ
	next_row = row + step[0]
	next_column = column + step[1]
	# ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์นด์šดํŠธ ๋‹ค์šด
	if next_row >=1 and next_row < =8 and next_column >=1 and next_column <= 8:
		result +=1

print(result)