[WIL_Carrotww] 10/03 ~ 10/10

์œ ํ˜•์„ยท2022๋…„ 10์›” 11์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
32/138
post-thumbnail

๐Ÿ“Carrotww์˜ ์ฝ”๋”ฉ ๊ธฐ๋ก์žฅ

๐Ÿงฒ ์ฃผ๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ

๐Ÿ” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ถˆ๋Ÿ‰ ์‚ฌ์šฉ์ž

  • ์ดˆ๊ธฐ ์ฝ”๋“œ
def solution(user_id, banned_id):
    temp = [[] for _ in range(len(user_id))]
    print(temp)
    cnt = 0
    for banned in banned_id:
        banned_len = len(banned)
        for user in user_id:
            if banned_len == len(user):
                for i in range(len(user)):
                    if banned[i] == '*' or banned[i] == user[i]:
                        continue
                    else:
                        break
                else:
                    user_index = user_id.index(user)
                    temp[user_index].append(cnt)
        cnt += 1
    print(temp)
    return 0

์ฒ˜์Œ์— ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ์ด ๋‚˜์˜ค๊ฒŒ ํ•˜์˜€๋‹ค.

์ผ๋‹จ user ์ˆ˜ ๋งŒํผ list๋ฅผ ๋งŒ๋“ค์–ด ๊ทธ ์•ˆ์— banned ์‚ฌ์šฉ์ž ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ์‹์œผ๋กœ ์ถœ๋ ฅ์„ ํ•ด๋ณด์•˜๋‹ค.
ํ•˜์ง€๋งŒ ํ•ด๋‹น ๊ฒฐ๊ณผ๊ฐ’์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์š”๊ตฌํ•˜๋Š” result ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์ˆœ์—ด์„ ์‚ฌ์šฉํ•ด ์ˆ˜ํ•™ ๋ฌธ์ œ ํ’€๋“ฏ ํ’€์–ด์•ผ ํ•ด์„œ ํฌ๊ธฐํ•˜์˜€๋‹ค.

๐Ÿ” ๋‹ค์Œ ํ’€์ด

def compare_id(id1: str, id2: str) -> bool:
    if len(id1) != len(id2):
        return False
    for i in range(len(id1)):
        if id2[i] == '*' or id1[i] == id2[i]:
            continue
        else:
            return False
    return True


def solution(user_id, banned_id):
    result = set()
    temp = []
    def store(id1: str, id2: str, idx: int):
        if idx == len(id2):
            test = sorted(temp)
            result.add(tuple(test))
            return

        for i in range(len(id1)):
            if id1[i] in temp:
                continue
            if compare_id(id1[i], id2[idx]):
                temp.append(id1[i])
                store(id1, id2, idx + 1)
                temp.pop()
        return

    idx = 0
    store(user_id, banned_id, idx)
    return len(result)
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์•„๋ฆฌ? ๋ผ๊ณ  ํ•ด์•ผํ•˜๋‚˜ ์ฃผ๋ง๋งˆ๋‹ค ์ง„ํ–‰์ค‘์ธ ์ฃผ๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์— ํ’€์—ˆ๋˜ ๋ฌธ์ œ์ธ๋ฐ ๋‚˜๋Š” ์ดˆ๊ธฐ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์ ‘๊ทผํ•˜๋‹ค๊ฐ€ ๋ชป ํ’€์—ˆ๋‹ค.
    ์‚ฌ์‹ค brute force ๋ฌธ์ œ๋ผ ์•„์ด๋””์–ด๋Š” ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์นœ๊ตฌ์ค‘ ํ•œ๋ช…์€ ์ˆœ์—ด๋กœ, ํ•œ๋ช…์€ brute force ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์—ฌ ์ด ๋ฌธ์ œ์—์„œ ๊นŒ๋‹ค๋กœ์› ๋˜ ์ค‘๋ณต ์ฒ˜๋ฆฌ, ์•„์ด๋”” ๊ฒน์นฉ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ํ•ด๋‹น ์•„์ด๋””๊ฐ€ ์“ฐ์ด๋Š” ์ž๋ฆฌ๋ฅผ 1๋กœ ๋ฐ”๊พผ ํ›„ 2์ง„์ˆ˜๋กœ set ๋ณ€์ˆ˜์— ์ €์žฅํ•˜์—ฌ ์ค‘๋ณต ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๊ฒƒ์ด ์ธ์ƒ์ ์ด์—ฌ 2์ง„์ˆ˜ ๋ฐฉ์‹๋งŒ ๋นผ๊ณ  ์ผ๋‹จ ๊ตฌํ˜„์„ ํ•ด ๋ณด์•˜๋‹ค.
    ๊น”๋”ํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ 2์ง„์ˆ˜ ์ €์žฅ ๋ฐฉ์‹์ด ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ ๊ฐ™๊ณ ,
    python ์Šค๋Ÿฌ์šด ๋ฐฉ์‹์€ ์ˆœ์—ด ๋ฐฉ์‹์œผ๋กœ ํ‘ธ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
    ์ผ๋‹จ ์œ„ ๋ฐฉ์‹์€ ํ•˜๋‚˜ํ•˜๋‚˜ ๋น„๊ตํ•˜๋Š” ์ผ๋ฐ˜์ ์€ brute force ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋ณธ ๋ฌธ์ œ์ด๋‹ค.

๐Ÿงฒ ์žก์„ค

๐Ÿ” ์š”์ฆ˜ ๋‹ค๋ฅธ ์ƒ๊ฐ์„ ๋งŽ์ด ํ•˜๋Š”์ง€ ์™œ์ด๋ ‡๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์ž˜ ์•ˆํ’€๋ฆฌ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค ใ…  ์ง‘์ค‘ํ•ด์•ผ๊ฒ ๋‹ค ใ… ใ… ใ… ใ… ใ… 

๐Ÿ” ๋ถ€ํŠธ์บ ํ”„์—์„œ ์žฅ๊ณ ๋ฅผ ๋‹ค๋ฃจ๊ณ  ํ˜„์žฌ ๋จธ์‹ ๋Ÿฌ๋‹์„ ๋ฐฐ์šฐ๊ณ ์žˆ๋Š”๋ฐ ์žฌ๋ฏธ๋Š” ์žˆ์ง€๋งŒ ์•„์ง ๋งŽ์ด ๋ฐฐ์šฐ๊ณ  ์Šต๋“ํ•œ๊ฒƒ์ด ์—†์–ด ์ •๋ฆฌ๋Š” ํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์Šฌ์Šฌ ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค. ์ผ๋‹จ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 3๋‹จ๊ณ„๋ฅผ ๋ฌด๋‚œํ•˜๊ฒŒ ํ‘ธ๋Š”๊ฒŒ ์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ!

0๊ฐœ์˜ ๋Œ“๊ธ€