ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 14890 ๊ฒฝ์‚ฌ๋กœ with Python
    PS 2022. 6. 29. 22:45
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 14890 ๊ฒฝ์‚ฌ๋กœ

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ํฌ๊ธฐ๊ฐ€ Nร—N์ธ ์ง€๋„๊ฐ€ ์žˆ๋‹ค. ์ง€๋„์˜ ๊ฐ ์นธ์—๋Š” ๊ทธ ๊ณณ์˜ ๋†’์ด๊ฐ€ ์ ํ˜€์ ธ ์žˆ๋‹ค.
      ์˜ค๋Š˜์€ ์ด ์ง€๋„์—์„œ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.
      ๊ธธ์ด๋ž€ ํ•œ ํ–‰ ๋˜๋Š” ํ•œ ์—ด ์ „๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํ•œ์ชฝ ๋์—์„œ ๋‹ค๋ฅธ์ชฝ ๋๊นŒ์ง€ ์ง€๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.
    1. ๊ธธ์„ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ๊ธธ์— ์†ํ•œ ๋ชจ๋“  ์นธ์˜ ๋†’์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
      ๋˜๋Š”, ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์•„์„œ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
      ๊ฒฝ์‚ฌ๋กœ๋Š” ๋†’์ด๊ฐ€ ํ•ญ์ƒ 1์ด๋ฉฐ, ๊ธธ์ด๋Š” L์ด๋‹ค.
      ๋˜, ๊ฐœ์ˆ˜๋Š” ๋งค์šฐ ๋งŽ์•„ ๋ถ€์กฑํ•  ์ผ์ด ์—†๋‹ค. ๊ฒฝ์‚ฌ๋กœ๋Š” ๋‚ฎ์€ ์นธ๊ณผ ๋†’์€ ์นธ์„ ์—ฐ๊ฒฐํ•˜๋ฉฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผํ•œ๋‹ค.
      1. 1.๊ฒฝ์‚ฌ๋กœ๋Š” ๋‚ฎ์€ ์นธ์— ๋†“์œผ๋ฉฐ, L๊ฐœ์˜ ์—ฐ์†๋œ ์นธ์— ๊ฒฝ์‚ฌ๋กœ์˜ ๋ฐ”๋‹ฅ์ด ๋ชจ๋‘ ์ ‘ํ•ด์•ผ ํ•œ๋‹ค.
      2. 2.๋‚ฎ์€ ์นธ๊ณผ ๋†’์€ ์นธ์˜ ๋†’์ด ์ฐจ์ด๋Š” 1์ด์–ด์•ผ ํ•œ๋‹ค.
      3. 3.๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์„ ๋‚ฎ์€ ์นธ์˜ ๋†’์ด๋Š” ๋ชจ๋‘ ๊ฐ™์•„์•ผ ํ•˜๊ณ , L๊ฐœ์˜ ์นธ์ด ์—ฐ์†๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    1. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์„ ์ˆ˜ ์—†๋‹ค.
      1. 1.๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์€ ๊ณณ์— ๋˜ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“๋Š” ๊ฒฝ์šฐ
      2. 2.๋‚ฎ์€ ์นธ๊ณผ ๋†’์€ ์นธ์˜ ๋†’์ด ์ฐจ์ด๊ฐ€ 1์ด ์•„๋‹Œ ๊ฒฝ์šฐ
      3. 3.๋‚ฎ์€ ์ง€์ ์˜ ์นธ์˜ ๋†’์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™์ง€ ์•Š๊ฑฐ๋‚˜, L๊ฐœ๊ฐ€ ์—ฐ์†๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
      4. 4.๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“๋‹ค๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ
    1. ์ง€๋„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ
    1. ์ฒซ์งธ ์ค„์— N (2 โ‰ค N โ‰ค 100)๊ณผ L (1 โ‰ค L โ‰ค N)์ด ์ฃผ์–ด์ง„๋‹ค.
      ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ง€๋„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์นธ์˜ ๋†’์ด๋Š” 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.
    1. ๊ตฌํ˜„ ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    
    n, l = map(int, stdin.readline().split())
    arr = []
    for _ in range(n):
        arr.append(list(map(int, stdin.readline().split())))
    cnt = 0
    
    
    def check(li):
        sw = [False for _ in range(n)]
        for i in range(n - 1):
            if li[i] == li[i + 1]:
                continue
    
            if abs(li[i] - li[i + 1]) > 1:
                return False
    
            if li[i] > li[i + 1]:
                temp = li[i + 1]
                for j in range(i + 1, i + 1 + l):
                    if 0 <= j < n:
                        if li[j] != temp:
                            return False
    
                        if sw[j]:
                            return False
    
                        sw[j] = True
    
                    else:
                        return False
    
            else:
                temp = li[i]
                for j in range(i, i - l, -1):
                    if 0 <= j < n:
                        if li[j] != temp:
                            return False
    
                        if sw[j]:
                            return False
    
                        sw[j] = True
    
                    else:
                        return False
        return True
    
    
    for i in arr:
        if check(i):
            cnt += 1
    
    for i in range(n):
        temp = []
        for j in range(n):
            temp.append(arr[j][i])
        if check(temp):
            cnt += 1
    
    print(cnt)

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    6 2
    3 2 1 1 2 3
    3 2 2 1 2 3
    3 2 2 2 3 3
    3 3 3 3 3 3
    3 3 3 3 2 2
    3 3 3 3 2 2

    ์‹คํ–‰๊ฒฐ๊ณผ

    7

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ๊ฐ€๋กœ, ์„ธ๋กœ์ถ•์„ ๊ฒ€์‚ฌํ•ด์„œ ๋‚ด๋ฆฌ๋ง‰๊ธธ์„ ์„ค์น˜ํ•ด์„œ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ ๊ธธ์ธ์ง€ ์‚ดํŽด๋ณด๋Š” ๋ฌธ์ œ์ด๋‹ค.
      ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•ด์„œ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ์•Œ์•„๋ณด๋Š” ๊ฒƒ์ด๋‹ค.
      ์ด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ check ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํŒ๋ณ„ํ•œ๋‹ค.
    1. ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์€ ๋ฌธ์ œ์— ์ œ์‹œ๋˜์–ด ์žˆ์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์‹œ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
      1. 1.๊ฒฝ์‚ฌ๋กœ๋Š” ์ž…๋ ฅ๋ฐ›์€ L๊ฐœ์˜ ์—ฐ์†๋œ ๊ณต๊ฐ„์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
      2. 2.๋‚ฎ์€ ์นธ๊ณผ ๋†’์€ ์นธ์˜ ๋†’์ด ์ฐจ์ด๋Š” 1์ด์–ด์•ผ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
      3. 3.๊ฐ™์€ ๋†’์ด์˜ L๊ฐœ์˜ ์—ฐ์†๋œ ์นธ์— ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
      4. 4.๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์€ ๊ณณ์—๋Š” ๋‹ค์‹œ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์„ ์ˆ˜ ์—†๋‹ค.
      5. 5.๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“๋Š” ๊ณณ์ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†๋‹ค.
    1. (2)๋ฒˆ์— ๊ธฐ์žฌ๋œ ์š”์•ฝ๋œ ๋‹ค์„ฏ๊ฐ€์ง€์˜ ์กฐ๊ฑด ์ค‘ ๋„ค๋ฒˆ์งธ๋ฅผ ๋ณด๋ฉด ์šฐ๋ฆฌ๋Š” ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•œ ๊ณณ์„ ํ‘œ์‹œํ•˜์—ฌ ๊ด€๋ฆฌํ•  ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
      ์ด๋ฅผ ์†Œ์Šค์ฝ”๋“œ์—์„œ check ํ•จ์ˆ˜ ๋‚ด๋ถ€์— sw ๋ผ๋Š” ๋ฆฌ์ŠคํŠธ๋กœ n ๊ฐœ๋งŒํผ False ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๋งŒ๋“ค์–ด๋‘์—ˆ๋‹ค.
    1. ๊ฐ ๋†’์ด๋ฅผ ์ž…๋ ฅ๋ฐ›์€ arr์„ ํ–‰๊ธฐ์ค€์œผ๋กœ ํ•œ์ค„์”ฉ ์ˆœํšŒํ•˜๋ฉด์„œ check ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
    1. arr ๋ฆฌ์ŠคํŠธ์˜ i ๋ฒˆ์งธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ํ˜„์žฌ ์ˆœํšŒํ•˜๊ณ  ์žˆ๋Š” ๋†’์ด(li[i])๊ฐ€
      ๊ทธ ๋‹ค์Œ ๋ธ”๋Ÿญ์˜ ๋†’์ด(li[i + 1])์™€ ๊ฐ™๋‹ค๋ฉด continue๋ฅผ ํ•ด์ค€๋‹ค.
    1. ๋งŒ์•ฝ arr ๋ฆฌ์ŠคํŠธ์˜ i ๋ฒˆ์งธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ํ˜„์žฌ ์ˆœํšŒํ•˜๊ณ  ์žˆ๋Š” ๋†’์ด (li[i])์™€
      ๊ทธ ๋‹ค์Œ ๋ธ”๋Ÿญ์˜ ๋†’์ด(li[i + 1])์˜ ์ฐจ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ๋‹ค๋ฉด return False

      (2)๋ฒˆ ์˜ 2๋ฒˆ ์กฐ๊ฑด์— ์œ„๋ฐฐ

    2. (6)๋ฒˆ์—์„œ๋„ ๋ฌด์‚ฌํžˆ False๋ฅผ return ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
      ์—ฌ๊ธฐ์„œ ํ˜„์žฌ ์ˆœํšŒํ•˜๊ณ  ์žˆ๋Š” i ๋ฒˆ์งธ ๋ธ”๋Ÿญ์ด i + 1 ๋ฒˆ์งธ ๋ธ”๋Ÿญ๋ณด๋‹ค ํฌ๋‹ค๋ฉด i + 1 ๋ฒˆ์งธ ๋ธ”๋Ÿญ๋ถ€ํ„ฐ i + 1 + L ๋ฒˆ์งธ ๋ธ”๋Ÿญ๊นŒ์ง€ ๊ฒ€์‚ฌํ•ด์•ผํ•œ๋‹ค.
      ์ด๋•Œ (2)๋ฒˆ์˜ 3๋ฒˆ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋Š”์ง€, (2)๋ฒˆ์˜ 4๋ฒˆ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.

    1. ๋˜๋Š” ํ˜„์žฌ ์ˆœํšŒํ•˜๊ณ  ์žˆ๋Š” i ๋ฒˆ์งธ ๋ธ”๋Ÿญ์ด i + 1 ๋ฒˆ์งธ ๋ธ”๋Ÿญ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด i ๋ฒˆ์งธ ๋ธ”๋Ÿญ๋ถ€ํ„ฐ i - L ๋ฒˆ์งธ ๋ธ”๋Ÿญ๊นŒ์ง€ ๊ฒ€์‚ฌํ•ด์•ผํ•œ๋‹ค.
      ์ด๋•Œ (2)๋ฒˆ์˜ 3๋ฒˆ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋Š”์ง€, (2)๋ฒˆ์˜ 4๋ฒˆ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.
    1. (7)๋ฒˆ ํ˜น์€ (8)๋ฒˆ์—์„œ ๊ฐ๊ฐ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋œ๋‹ค๋ฉด, return False
      ์œ„๋ฐฐ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด sw ๋ฆฌ์ŠคํŠธ์— True๋ฅผ ๊ธฐ์žฌํ•˜์—ฌ ๊ฒฝ์‚ฌ๋กœ ์„ค์น˜ ์œ ๋ฌด๋ฅผ ์ €์žฅํ•œ๋‹ค.
    1. check ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜๋ฐ›์€ True or False ๊ฐ’์— ๋”ฐ๋ผ cnt ๋ฅผ 1์”ฉ ๋Š˜๋ ค์ค€๋‹ค.
    1. ์„ธ๋กœ ๊ฒ€์‚ฌ๋Š” ๋”ฐ๋กœ temp ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ ์—ด์„ ์ˆœํšŒํ•˜์—ฌ ์ €์žฅํ•œ ํ›„, check ํ•จ์ˆ˜์— ๋„˜๊ฒจ์ฃผ๊ณ  ๊ฒ€์‚ฌํ•˜๋ฉด ๋œ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.