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๋ฅผ ์ถœ๋ ฅํ–ˆ๋‹ค. ์ด๊ฒƒ๋„ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํ‘ผ ์„ธ ๋ฒˆ์งธ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋‹ˆ๊นŒ ์‹ ๋ฐ•ํ•˜๊ณ  ๊น”๋”ํ–ˆ๋‹ค...๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค. ๋‚˜๋„ ์„ผ์Šค์Ÿ์ด๊ฐ€ ๋˜๊ณ  ์‹ถ๋‹ค...!!

 

+ Recent posts