https://school.programmers.co.kr/learn/courses/30/lessons/181832

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์–‘์˜ ์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. n × n ๋ฐฐ์—ด์— 1๋ถ€ํ„ฐ n^2๊นŒ์ง€ ์ •์ˆ˜๋ฅผ ์ธ๋ฑ์Šค [0][0]๋ถ€ํ„ฐ ์‹œ๊ณ„๋ฐฉํ–ฅ ๋‚˜์„ ํ˜•์œผ๋กœ ๋ฐฐ์น˜ํ•œ ์ด์ฐจ์› ๋ฐฐ์—ด์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ n ≤ 30

 

์ž…์ถœ๋ ฅ ์˜ˆ

n result
4 [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]
5 [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]]

 

 

์†Œ์Šค ์ฝ”๋“œ
def solution(n):
    if n == 1:
        return [[1]]

    answer = [[0 for j in range(n)] for i in range(n)]

    i = 0       # ํ–‰
    j = 0       # ์—ด
    dir = 'r'   # ๋ฐฉํ–ฅ
    
    for num in range(n*n):
        answer[i][j] = num+1
        if dir == 'r':
            j += 1
            if j == n-1 or answer[i][j+1] != 0:
                dir = 'd'
        elif dir == 'd':
            i += 1
            if i == n-1 or answer[i+1][j] != 0:
                dir = 'l'
        elif dir == 'l':
            j -= 1
            if j == 0 or answer[i][j-1] != 0:
                dir = 'u'
        else:
            i -= 1
            if i == 0 or answer[i-1][j] != 0:
                dir = 'r'            
    
    
    return answer

 

ํ’€์ด

  • 1 x 1 ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ์— [[1]]์„ ์ถœ๋ ฅ
  • ํ–‰ ๋ฒˆํ˜ธ = i / ์—ด ๋ฒˆํ˜ธ = j / ๋ฐฉํ–ฅ = dir (r:์˜ค๋ฅธ์ชฝ → d:์•„๋ž˜์ชฝ  → l:์™ผ์ชฝ → u:์œ„์ชฝ)
  • n x n ๋ฒ”์œ„๋ฅผ ๋Œ๋ฉด์„œ ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ฑ„์›Œ์ฃผ๋Š” for๋ฌธ
    • ๋ฐฉํ–ฅ์ด ์˜ค๋ฅธ์ชฝ์ธ ๊ฒฝ์šฐ : ์—ด ํ•œ ์นธ ์ด๋™ / ๋งˆ์ง€๋ง‰ ์—ด์ด๊ฑฐ๋‚˜ ์นธ์ด ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉด ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ
    • ๋ฐฉํ–ฅ์ด ์•„๋ž˜์ชฝ์ธ ๊ฒฝ์šฐ : ํ–‰ ํ•œ ์นธ ์ด๋™ / ๋งˆ์ง€๋ง‰ ํ–‰์ด๊ฑฐ๋‚˜ ์นธ์ด ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉด ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ
    • ๋ฐฉํ–ฅ์ด ์™ผ์ชฝ์ธ ๊ฒฝ์šฐ : ์—ด ํ•œ ์นธ ์•ž์œผ๋กœ ์ด๋™ / ์ฒซ ๋ฒˆ์งธ ์—ด์ด๊ฑฐ๋‚˜ ์นธ์ด ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉด ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ
    • ๋ฐฉํ–ฅ์ด ์œ„์ชฝ์ธ ๊ฒฝ์šฐ : ํ–‰ ํ•œ ์นธ ์œ„๋กœ ์ด๋™ / ์ฒซ ๋ฒˆ์งธ ํ–‰์ด๊ฑฐ๋‚˜ ์นธ์ด ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉด ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ

 

 

์ด๊ฑฐ ๋ ˆ๋ฒจ0 ๋งž์•„์š”..? ๊ทธ๋ ‡๋‹ค๋ฉด ๋‚ด ์‹ค๋ ฅ์ด ๋งˆ์ด๋„ˆ์Šค์ธ๊ฐ€๋ณด๋‹ค....์ด๋Ÿฐ ์ €๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ํ•ด๋ณด๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ๊ฒ€์ƒ‰ํ•ด์„œ ์•Œ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ์•ž์œผ๋กœ ๋” ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค...ํ”Œ๋Ÿฌ์Šค ์‹ค๋ ฅ์ด ๋  ๋•Œ๊นŒ์ง€ ํ™”์ดํŒ…..!!

 

https://school.programmers.co.kr/learn/courses/30/lessons/181894

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜ ๋ฐฐ์—ด arr๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์•ˆ์˜ 2๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋œ ๊ฐ€์žฅ ์ž‘์€ ์—ฐ์†๋œ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

๋‹จ, arr์— 2๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ [-1]์„ return ํ•ฉ๋‹ˆ๋‹ค.

 

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ arr์˜ ๊ธธ์ด ≤ 100,000
  • 1 ≤ arr์˜ ์›์†Œ ≤ 10

 

์ž…์ถœ๋ ฅ ์˜ˆ

arr result
[1, 2, 1, 4, 5, 2, 9] [2, 1, 4, 5, 2]
[1, 2, 1] [2]
[1, 1, 1] [-1]
[1, 2, 1, 2, 1, 10, 2, 1] [2, 1, 2, 1, 10, 2]

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1 (์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์‹คํŒจ)
def solution(arr):
    cnt = arr.count(2)
    start = end = 0
    answer = []

    if cnt == 0:
        answer = [-1]
    elif cnt == 1:
        answer = [2]
    else:
        for idx in range(len(arr)):
            if arr[idx]==2 and cnt==arr.count(2):
                start = idx
                cnt -= 1
            elif arr[idx]==2 and cnt==1:
                end = idx
            elif arr[idx]==2:
                cnt -= 1
        answer = arr[start:end+1]
    
    return answer

 

ํ’€์ด # 1

  • arr์—์„œ 2์˜ ๊ฐฏ์ˆ˜๋ฅผ cnt๋กœ ์„ค์ •ํ•˜๊ณ  2๊ฐ€ ์—†์œผ๋ฉด answer = [-1], 1๊ฐœ๋ฉด answer = [2]
  • arr์—์„œ 2๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ
    • 2์˜ ๊ฐฏ์ˆ˜ cnt์—์„œ 2๊ฐ€ ๋“ฑ์žฅํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ๋นผ์„œ ๋ช‡ ๋ฒˆ์งธ ๋“ฑ์žฅ์ธ์ง€ ํ™•์ธ
    • start = ์ฒ˜์Œ 2๊ฐ€ ๋“ฑ์žฅํ•œ ์ธ๋ฑ์Šค / end = ๋งˆ์ง€๋ง‰ 2๊ฐ€ ๋“ฑ์žฅํ•œ ์ธ๋ฑ์Šค
    • answer = arr์˜ start๋ถ€ํ„ฐ end๊นŒ์ง€์˜ ์ธ๋ฑ์Šค

 

# 2
def solution(arr):
    answer = []
    idx_list = []

    for idx in range(len(arr)):
        if arr[idx] == 2:
            idx_list.append(idx)

    cnt = len(idx_list)
    if cnt == 0:
        answer = [-1]
    else:
        answer = arr[idx_list[0]:idx_list[-1]+1]

    return answer

 

ํ’€์ด #2

  • arr๋ฅผ ๋Œ๋ฉด์„œ 2๊ฐ€ ๋“ฑ์žฅํ•  ๋•Œ๋งˆ๋‹ค idx_list์— idx ์ถ”๊ฐ€
  • idx_list์˜ ๊ฐฏ์ˆ˜๋ฅผ cnt๋กœ ๋‘๊ณ  0์ด๋ฉด answer = [-1]
  • idx_list์˜ ๊ฐฏ์ˆ˜(=cnt)๊ฐ€ 0์•„ ์•„๋‹Œ ๊ฒฝ์šฐ
    • idx_list์—๋Š” 2์˜ ์ธ๋ฑ์Šค๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ
    • idx_list[0] = ์ฒ˜์Œ 2๊ฐ€ ๋“ฑ์žฅํ•œ ์ธ๋ฑ์Šค / idx_list[-1]  = ๋งˆ์ง€๋ง‰ 2๊ฐ€ ๋“ฑ์žฅํ•œ ์ธ๋ฑ์Šค
    • answer = arr์˜ idx_list[0]๋ถ€ํ„ฐ idx_list[-1]๊นŒ์ง€์˜ ์ธ๋ฑ์Šค

 

# 3
def solution(arr):
    answer = []
    if 2 not in arr:
        answer = [-1]
    else:
        answer = arr[arr.index(2) : len(arr) - arr[::-1].index(2)]
    return answer

 

ํ’€์ด #3

  • arr์— 2๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด answer = [-1]
  • arr์— 2๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”๊ฒฝ์šฐ
    • arr.index(2) = ์ฒ˜์Œ์œผ๋กœ 2๊ฐ€ ๋“ฑ์žฅํ•œ ์ธ๋ฑ์Šค
    • arr[::-1].index(2) = arr๋ฅผ ๊ฑฐ๊พธ๋กœ ๋ดค์„ ๋•Œ ์ฒ˜์Œ 2๊ฐ€ ๋“ฑ์žฅํ•œ ์ธ๋ฑ์Šค = ๋งˆ์ง€๋ง‰์œผ๋กœ 2๊ฐ€ ๋“ฑ์žฅํ•œ ์ธ๋ฑ์Šค
    • arr๋ฅผ ๊ฑฐ๊พธ๋กœ ๋ดค์„ ๋•Œ์˜ ์ธ๋ฑ์Šค์ด๋ฏ€๋กœ ์ „์ฒด ๊ธธ์ด์—์„œ ๋นผ๊ธฐ...!!

 

 

์ฒซ ๋ฒˆ์งธ ํ’€์ด๋Š” ์ด๊ฒƒ ์ €๊ฒƒ ์กฐ๊ฑด์„ ๋ง๋ถ™์ด๋‹ค ๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‘ ๋ฒˆ์งธ ํ’€์ด๋กœ๋Š” 2๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ธ๋ฑ์Šค๋งŒ ์ถ”์ถœํ•ด์„œ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์˜ arr๋ฅผ ์ถœ๋ ฅํ–ˆ๋‹ค. ์ด๊ฒƒ๋„ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํ‘ผ ์„ธ ๋ฒˆ์งธ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋‹ˆ๊นŒ ์‹ ๋ฐ•ํ•˜๊ณ  ๊น”๋”ํ–ˆ๋‹ค...๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค. ๋‚˜๋„ ์„ผ์Šค์Ÿ์ด๊ฐ€ ๋˜๊ณ  ์‹ถ๋‹ค...!!

 

https://school.programmers.co.kr/learn/courses/30/lessons/181934

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ž์—ด์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ์ˆ˜๊ฐ€ n๊ณผ m์ด๋ผ๋ฉด
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
๋‘ ๋ฌธ์ž์—ด ineq์™€ eq๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ineq๋Š” "<"์™€ ">"์ค‘ ํ•˜๋‚˜๊ณ , eq๋Š” "="์™€ "!"์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ์ •์ˆ˜ n๊ณผ m์ด ์ฃผ์–ด์งˆ ๋•Œ, n๊ณผ m์ด ineq์™€ eq์˜ ์กฐ๊ฑด์— ๋งž์œผ๋ฉด 1์„ ์•„๋‹ˆ๋ฉด 0์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ n, m ≤ 100

 

์ž…์ถœ๋ ฅ ์˜ˆ

ineq eq n m result
"<" "=" 20 50 1
">" "!" 41 78 0

 

 

์†Œ์Šค ์ฝ”๋“œ
# 1
def solution(ineq, eq, n, m):
    answer = 0      
    
    if (n>m) and (ineq==">"):
        answer = 1
    elif (n<m) and (ineq=="<"):
        answer = 1
    elif (n==m) and (eq=="="):
        answer= 1
    
    return answer

 

ํ’€์ด # 1

  • ์ˆซ์ž n,m์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๊ณ  ineq์™€ ๊ฐ™์€์ง€ ํ™•์ธ
  • ๋‘ ์ˆซ์ž๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” eq๋ฅผ ๋น„๊ตํ•˜์—ฌ ํ™•์ธ

 

# 2
def solution(ineq, eq, n, m):
    answer = 0      
    
    eq = eq.replace("!","")
    answer = int(eval(str(n)+ineq+eq+str(m)))
    
    return answer

 

ํ’€์ด #2

  • eq๊ฐ€ "!"์ธ ๊ฒฝ์šฐ ๊ณต๋ฐฑ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
    • replace : ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•˜๋Š” ํ•จ์ˆ˜
    • ๋ณ€์ˆ˜.replace("๋ณ€๊ฒฝ ์ „ ๋ฌธ์ž์—ด", "๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์€ ๋ฌธ์ž์—ด")
  • ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž๋ฅผ ๋‚˜์—ดํ•˜์—ฌ ์‹คํ–‰
    • eval : ๋ฌธ์ž์—ด์„ ์‹(expression)์œผ๋กœ ๋ฐ›์•„์„œ ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜
    • ์‹์„ ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์ˆซ์ž๋ฅผ string ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ
  • True / False๋ฅผ ์ˆซ์ž๋กœ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด int ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ

 

 

๋ฌธ์ž์—ด ๋ณ€๊ฒฝํ•˜๋Š” ๊ฑฐ ์ƒ๊ฐ๋„ ๋ชปํ–ˆ๋Š”๋ฐ ์„ธ์ƒ์— ๋˜‘๋˜‘ํ•œ ์‚ฌ๋žŒ์ด ๋งŽ๋‹ค...๐Ÿ˜ฎ

+ Recent posts