๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋Œ€์ถฉ ๋งŒ๋“  ์žํŒ

๐ŸŽฎinspirer9 2023. 2. 23. 23:22
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

ํœด๋Œ€ํฐ์˜ ์žํŒ์€ ์ปดํ“จํ„ฐ ํ‚ค๋ณด๋“œ ์žํŒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•˜๋‚˜์˜ ํ‚ค์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ ๋ฌธ์ž๊ฐ€ ํ• ๋‹น๋œ ๊ฒฝ์šฐ, ๋™์ผํ•œ ํ‚ค๋ฅผ ์—ฐ์†ํ•ด์„œ ๋น ๋ฅด๊ฒŒ ๋ˆ„๋ฅด๋ฉด ํ• ๋‹น๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ž๊ฐ€ ๋ฐ”๋€๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 1๋ฒˆ ํ‚ค์— "A", "B", "C" ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ž๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ๋‹ค๋ฉด 1๋ฒˆ ํ‚ค๋ฅผ ํ•œ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด "A", ๋‘ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด "B", ์„ธ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด "C"๊ฐ€ ๋˜๋Š” ์‹์ž…๋‹ˆ๋‹ค.

๊ฐ™์€ ๊ทœ์น™์„ ์ ์šฉํ•ด ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ๋งŒ๋“  ํœด๋Œ€ํฐ ์žํŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํœด๋Œ€ํฐ ์žํŒ์€ ํ‚ค์˜ ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ๋ถ€ํ„ฐ ์ตœ๋Œ€ 100๊ฐœ๊นŒ์ง€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠน์ • ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ์ž…๋ ฅ๋˜๋Š” ๋ฌธ์ž๋“ค๋„ ๋ฌด์ž‘์œ„๋กœ ๋ฐฐ์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜, ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ์žํŒ ์ „์ฒด์— ์—ฌ๋Ÿฌ ๋ฒˆ ํ• ๋‹น๋œ ๊ฒฝ์šฐ๋„ ์žˆ๊ณ , ํ‚ค ํ•˜๋‚˜์— ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ํ• ๋‹น๋œ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ์•„์˜ˆ ํ• ๋‹น๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช‡๋ช‡ ๋ฌธ์ž์—ด์€ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํœด๋Œ€ํฐ ์žํŒ์„ ์ด์šฉํ•ด ํŠน์ • ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•  ๋•Œ, ํ‚ค๋ฅผ ์ตœ์†Œ ๋ช‡ ๋ฒˆ ๋ˆŒ๋Ÿฌ์•ผ ๊ทธ ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

1๋ฒˆ ํ‚ค๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํ• ๋‹น๋œ ๋ฌธ์ž๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋‹ด๊ธด ๋ฌธ์ž์—ด๋ฐฐ์—ด keymap๊ณผ ์ž…๋ ฅํ•˜๋ ค๋Š” ๋ฌธ์ž์—ด๋“ค์ด ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด targets๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ‚ค๋ฅผ ์ตœ์†Œ ๋ช‡ ๋ฒˆ์”ฉ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š”์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

๋‹จ, ๋ชฉํ‘œ ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์„ ๋•Œ๋Š” -1์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ keymap์˜ ๊ธธ์ด ≤ 100
    • 1 ≤ keymap์˜ ์›์†Œ์˜ ๊ธธ์ด ≤ 100
    • keymap[i]๋Š” i + 1๋ฒˆ ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”๋€Œ๋Š” ๋ฌธ์ž๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
      • ์˜ˆ๋ฅผ ๋“ค์–ด keymap[0] = "ABACD" ์ธ ๊ฒฝ์šฐ 1๋ฒˆ ํ‚ค๋ฅผ ํ•œ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด A, ๋‘ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด B, ์„ธ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด A ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
    • keymap์˜ ์›์†Œ์˜ ๊ธธ์ด๋Š” ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • keymap์˜ ์›์†Œ๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 1 ≤ targets์˜ ๊ธธ์ด ≤ 100
    • 1 ≤ targets์˜ ์›์†Œ์˜ ๊ธธ์ด ≤ 100
    • targets์˜ ์›์†Œ๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

keymap targets result
["ABACD", "BCEFD"] ["ABCD","AABB"] [9, 4]
["AA"] ["B"] [-1]
["AGZ", "BSSS"] ["ASA","BGZ"] [4, 6]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • "ABCD"์˜ ๊ฒฝ์šฐ,
  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → A
  • 2๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → B
  • 2๋ฒˆ ํ‚ค ๋‘ ๋ฒˆ → C
  • 1๋ฒˆ ํ‚ค ๋‹ค์„ฏ ๋ฒˆ → D
  • ๋”ฐ๋ผ์„œ ์ดํ•ฉ์ธ 9๋ฅผ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • "AABB"์˜ ๊ฒฝ์šฐ,
  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → A
  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → A
  • 2๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → B
  • 2๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → B
  • ๋”ฐ๋ผ์„œ ์ดํ•ฉ์ธ 4๋ฅผ ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ [9,4]๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • "B"์˜ ๊ฒฝ์šฐ, 'B'๊ฐ€ ์–ด๋””์—๋„ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— -1์„ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ [-1]์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • "ASA"์˜ ๊ฒฝ์šฐ,
  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → A
  • 2๋ฒˆ ํ‚ค ๋‘ ๋ฒˆ → S
  • 1๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → A
  • ๋”ฐ๋ผ์„œ ์ดํ•ฉ์ธ 4๋ฅผ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • "BGZ"์˜ ๊ฒฝ์šฐ,
  • 2๋ฒˆ ํ‚ค ํ•œ ๋ฒˆ → B
  • 1๋ฒˆ ํ‚ค ๋‘ ๋ฒˆ → G
  • 1๋ฒˆ ํ‚ค ์„ธ ๋ฒˆ → Z
  • ๋”ฐ๋ผ์„œ ์ดํ•ฉ์ธ 6์„ ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ [4, 6]์„ return ํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด

  • 1๋ ˆ๋ฒจ ๊ตฌํ˜„ ๋ฌธ์ œ
def solution(keymap, targets):
    answer = []
    keymap_redesign = {}
    for k in keymap:
        k = list(k)
        for i in range(len(k)):
            try:
                if keymap_redesign[k[i]] > i+1:
                    keymap_redesign[k[i]] = i+1
            except:
                keymap_redesign[k[i]] = i+1
    for t in targets:
        t = list(t)
        _tmp = 0
        is_fail = False
        for tt in t:
            try:
                _tmp += keymap_redesign[tt]
            except:
                is_fail = True
                break
        if is_fail == False:
            answer.append(_tmp)
        else:
            answer.append(-1)
    return answer
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.08ms, 10.3MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.4MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.2MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.09ms, 10.1MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.07ms, 10.4MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.10ms, 10.3MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.12ms, 10.1MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.13ms, 10MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.2MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.11ms, 10.3MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.3MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.3MB)
728x90
๋ฐ˜์‘ํ˜•