J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[BOJ] ๋ฐฑ์ค€ 17609๋ฒˆ ํšŒ๋ฌธ - ํŒŒ์ด์ฌ(Python)
Algorithm/๐Ÿ“˜ Baekjoon Judge

[BOJ] ๋ฐฑ์ค€ 17609๋ฒˆ ํšŒ๋ฌธ - ํŒŒ์ด์ฌ(Python)

728x90

๋ฌธ์ œ

ํšŒ๋ฌธ(ๅ›žๆ–‡) ๋˜๋Š” ํŒฐ๋ฆฐ๋“œ๋กฌ(palindrome)์€ ์•ž ๋’ค ๋ฐฉํ–ฅ์œผ๋กœ ๋ณผ ๋•Œ ๊ฐ™์€ ์ˆœ์„œ์˜ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ‘abba’ ‘kayak’, ‘reviver’, ‘madam’์€ ๋ชจ๋‘ ํšŒ๋ฌธ์ด๋‹ค. ๋งŒ์ผ ๊ทธ ์ž์ฒด๋Š” ํšŒ๋ฌธ์ด ์•„๋‹ˆ์ง€๋งŒ ํ•œ ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•˜์—ฌ ํšŒ๋ฌธ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด์ด๋ผ๋ฉด ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฐ ๋ฌธ์ž์—ด์„ “์œ ์‚ฌํšŒ๋ฌธ”(pseudo palindrome)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ‘summuus’๋Š” 5๋ฒˆ์งธ๋‚˜ ํ˜น์€ 6๋ฒˆ์งธ ๋ฌธ์ž ‘u’๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ‘summus’์ธ ํšŒ๋ฌธ์ด ๋˜๋ฏ€๋กœ ์œ ์‚ฌํšŒ๋ฌธ์ด๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์€ ์ œ์‹œ๋œ ๋ฌธ์ž์—ด์„ ๋ถ„์„ํ•˜์—ฌ ๊ทธ๊ฒƒ์ด ๊ทธ ์ž์ฒด๋กœ ํšŒ๋ฌธ์ธ์ง€, ๋˜๋Š” ํ•œ ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•˜๋ฉด ํšŒ๋ฌธ์ด ๋˜๋Š” “์œ ์‚ฌํšŒ๋ฌธ”์ธ์ง€, ์•„๋‹ˆ๋ฉด ํšŒ๋ฌธ์ด๋‚˜ ์œ ์‚ฌํšŒ๋ฌธ๋„ ์•„๋‹Œ ์ผ๋ฐ˜ ๋ฌธ์ž์—ด์ธ์ง€๋ฅผ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์ผ ๋ฌธ์ž์—ด ๊ทธ ์ž์ฒด๋กœ ํšŒ๋ฌธ์ด๋ฉด 0, ์œ ์‚ฌํšŒ๋ฌธ์ด๋ฉด 1, ๊ทธ ์™ธ๋Š” 2๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. 

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ T(1 ≤ T ≤ 30)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ T๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 3 ์ด์ƒ 100,000 ์ดํ•˜์ด๊ณ , ์˜๋ฌธ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ถœ๋ ฅ

๊ฐ ๋ฌธ์ž์—ด์ด ํšŒ๋ฌธ์ธ์ง€, ์œ ์‚ฌ ํšŒ๋ฌธ์ธ์ง€, ๋‘˜ ๋ชจ๋‘ ํ•ด๋‹น๋˜์ง€ ์•Š๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ํšŒ๋ฌธ์ด๋ฉด 0, ์œ ์‚ฌ ํšŒ๋ฌธ์ด๋ฉด 1, ๋‘˜ ๋ชจ๋‘ ์•„๋‹ˆ๋ฉด 2๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

 

https://www.acmicpc.net/problem/17609

 

17609๋ฒˆ: ํšŒ๋ฌธ

๊ฐ ๋ฌธ์ž์—ด์ด ํšŒ๋ฌธ์ธ์ง€, ์œ ์‚ฌ ํšŒ๋ฌธ์ธ์ง€, ๋‘˜ ๋ชจ๋‘ ํ•ด๋‹น๋˜์ง€ ์•Š๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ํšŒ๋ฌธ์ด๋ฉด 0, ์œ ์‚ฌ ํšŒ๋ฌธ์ด๋ฉด 1, ๋‘˜ ๋ชจ๋‘ ์•„๋‹ˆ๋ฉด 2๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๐Ÿ’ก ํ’€์ด ๋ฐ ์ฝ”๋“œ

string = []
n = int(input())
for _ in range(n):
    string.append(input())

def palindrome(s, e, temp):
    while s <= e:
        if str[s] == str[e]:
            s += 1
            e -= 1
        else:
            if temp == 0:
                left = palindrome(s+1, e, temp+1)
                right = palindrome(s, e-1, temp+1)
                return min(left, right)
            else:
                return 2
    return temp
                
result = []
for str in string:
    s, e = 0, len(str)-1
    result.append(palindrome(s, e, 0))
        
for r in result:
    print(r)

๋‹จ์ˆœ ๊ตฌํ˜„ ๋ฌธ์ œ์ด์ง€๋งŒ ์žฌ๊ท€์— ๋Œ€ํ•œ ๋ณต์Šต์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๋งจ ์ฒ˜์Œ์—” ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘์ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜ s์™€ ๋์ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜ e์— ๋Œ€ํ•˜์—ฌ s๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž(str[s])์™€ e๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž(str[e])๊ฐ€ ๊ฐ™์œผ๋ฉด s+1, e-1๋กœ ํฌ์ธํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์ฃผ๊ณ , ๋งŒ์•ฝ ๋‘ ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด s์™€ e๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž๊ฐ€ ์„œ๋กœ ๋‹ฌ๋ž๋˜ ํšŸ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” temp์— ๋”ฐ๋ผ์„œ ๊ฒฝ์šฐ๋ฅผ ๋‹ค์‹œ ๋‚˜๋ˆ ์ค€๋‹ค. temp๊ฐ€ 1์ด์ƒ์ด๋ผ๋ฉด ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•ด๋„ ํšŒ๋ฌธ์ด ์•ˆ๋˜๋ฏ€๋กœ 2๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. temp๊ฐ€ 0์ด๋ฉด ์žฌ๊ท€๋ฅผ ํ†ตํ•ด ํ•œ๋ฒˆ์€ s๋งŒ s+1๋กœ ์˜ฎ๊ฒจ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์ด ํšŒ๋ฌธ์ธ์ง€ ํŒ๋ณ„(left)ํ•˜๊ณ , ๋˜ ํ•œ๋ฒˆ์€ e๋งŒ e-1๋กœ ์˜ฎ๊ฒจ์ฃผ์–ด ํšŒ๋ฌธ์ธ์ง€ ํŒ๋ณ„(right)ํ•˜์—ฌ ๋‘ ๊ฒฝ์šฐ์˜ ๋ฐ˜ํ™˜๊ฐ’ ์ค‘ ์ž‘์€ ๊ฐ’์„ ์ตœ์ข… ๋ฌธ์ž์—ด์˜ ๋ฐ˜ํ™˜๊ฐ’ ์ฆ‰, ํšŒ๋ฌธ ํŒ๋ณ„ ๊ฐ’์œผ๋กœ ์„ ํƒํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, s+1๋กœ ์˜ฎ๊ฒจ ํŒ๋ณ„ํ•œ ๊ฒฝ์šฐ(left) ๋‚˜๋จธ์ง€๊ฐ€ ํšŒ๋ฌธ์ด์–ด์„œ 1์ด, e-1๋กœ ์˜ฎ๊ฒจ ํŒ๋ณ„ํ•œ ๊ฒฝ์šฐ(right) ๋‚˜๋จธ์ง€๊ฐ€ ํšŒ๋ฌธ์ด ์•„๋‹ˆ์–ด์„œ 2๊ฐ€ ๋ฐ˜ํ™˜๋๋‹ค๋ฉด ์ด ๋ฌธ์ž์—ด์€ ์œ ์‚ฌํšŒ๋ฌธ์ด๋ฏ€๋กœ 1์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ, ์ฒ˜์Œ๋ถ€ํ„ฐ ํšŒ๋ฌธ์ธ ๊ฒฝ์šฐ์—๋Š” temp์˜ ์ดˆ๊ธฐ๊ฐ’์ธ 0์ด ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

728x90

'Algorithm > ๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 15686๋ฒˆ ์น˜ํ‚จ ๋ฐฐ๋‹ฌ - ํŒŒ์ด์ฌ(Python)  (0) 2022.01.07
[BOJ] ๋ฐฑ์ค€ 14503๋ฒˆ ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ - ํŒŒ์ด์ฌ(Python)  (1) 2022.01.07
[BOJ] ๋ฐฑ์ค€ 16400๋ฒˆ ์†Œ์ˆ˜ ํ™”ํ - ํŒŒ์ด์ฌ(Python)  (0) 2021.12.31
[BOJ] ๋ฐฑ์ค€ 2293๋ฒˆ ๋™์ „1 - ํŒŒ์ด์ฌ(Python)  (0) 2021.12.31
[BOJ] ๋ฐฑ์ค€ 3107๋ฒˆ IPv6 - ํŒŒ์ด์ฌ(Python)  (0) 2021.12.29
    'Algorithm/๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [BOJ] ๋ฐฑ์ค€ 15686๋ฒˆ ์น˜ํ‚จ ๋ฐฐ๋‹ฌ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 14503๋ฒˆ ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 16400๋ฒˆ ์†Œ์ˆ˜ ํ™”ํ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 2293๋ฒˆ ๋™์ „1 - ํŒŒ์ด์ฌ(Python)
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”