[Programmers] ์กฐ์ด์Šคํ‹ฑ

Updated:

์กฐ์ด์Šคํ‹ฑ

์กฐ์ด์Šคํ‹ฑ ์„ ํด๋ฆญํ•˜๋ฉด ๋ฐ”๋กœ ์ด๋™ํ•œ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ํ•ด๋†“๊ณ  ์†์œผ๋กœ ํ•˜๋‹ค๋ณด๋ฉด ๊ทœ์น™์ด ๋ณด์ธ๋‹ค.

  1. โ€˜Aโ€™ ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์กฐ์ด์Šคํ‹ฑ์„ ์œ„๋กœ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ ์•„๋ž˜๋กœ ๋‚ด๋ ค ์›ํ•˜๋Š” ์•ŒํŒŒ๋ฒณ์„ ๋งŒ๋“ค ์กฐ์ž‘ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•œ ๋’ค โ€˜Aโ€™ ๋กœ ๋ณ€๊ฒฝ.
  2. โ€˜Aโ€™ ๊ฐ€ ์•„๋‹ ๋•Œ ๊นŒ์ง€ ์˜ค๋ฅธ์ชฝ ์ด๋™, ์™ผ์ชฝ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด ๋น„๊ต ํ›„ ์ž‘์€ ๊ฐ’์˜ ์œ„์น˜๋กœ ์ด๋™ ํ•ด 1๋ฒˆ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
  3. ์ž…๋ ฅ ๋ฐ›์€ name ์ด ๋ชจ๋‘ โ€˜Aโ€™ ๋กœ ๋ฐ”๋€Œ๋ฉด ์ข…๋ฃŒ.

from string import ascii_uppercase


def make_alpha(val):
	alpha = list(ascii_uppercase)
	value = alpha.index(val)

	if value <= 13:
		pass
	else:
		value = 26 - value

	return value


def right_move(name, idx):
	cur_idx = idx
	move_cnt = 0
	while name[cur_idx] == 'A':
		cur_idx = (cur_idx + 1) % len(name)
		move_cnt += 1

	return move_cnt


def left_move(name, idx):
	cur_idx = idx
	move_cnt = 0

	while name[cur_idx] == 'A':
		cur_idx = (cur_idx - 1)
		if cur_idx < 0:
			cur_idx = len(name) - 1
		move_cnt += 1

	return move_cnt


def solution(name):
	answer = 0
	idx = 0
	finish_check = 'A' * len(name)

	while True:
		if name[idx] != 'A':
			answer += make_alpha(name[idx])
			name = name.replace(name[idx], 'A', 1)

		if name == finish_check:
			break

		right_move_cnt = right_move(name, idx)
		left_move_cnt = left_move(name, idx)

		if right_move_cnt <= left_move_cnt:
			answer += right_move_cnt
			idx += right_move_cnt

		else:
			answer += left_move_cnt
			idx -= left_move_cnt
			if idx < 0:
				idx = len(name) - left_move_cnt

	return answer

์•ŒํŒŒ๋ฒณ์„ ๋งŒ๋“ค ์กฐ์ž‘ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ฃผ ๊ฐ„๋‹จํ–ˆ๋‹ค.

A ~ M ๊นŒ์ง€๋Š” ์œ„๋กœ, O ~ Z ๊นŒ์ง€๋Š” ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋ฉด ๋œ๋‹ค.

N ์€ ์•ŒํŒŒ๋ฒณ์—์„œ ์ค‘๊ฐ„์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„๋กœ ์˜ฌ๋ ค ๋งŒ๋“ค๋˜ ์•„๋ž˜๋กœ ์˜ฌ๋ ค ๋งŒ๋“ค๋˜ ์ƒ๊ด€์—†๋‹ค.

์›ํ•˜๋Š” ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊พผ ๋’ค ์™ผ์ชฝ์œผ๋กœ ๊ฐˆ์ง€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ์ง€๋ฅผ ์ •ํ•˜๋ฉด ๋˜๋Š”๋ฐ

์ด๊ฒƒ๋„ ๋‹จ์ˆœํžˆ โ€˜Aโ€™ ๊ฐ€ ์•„๋‹ ๋•Œ ๊นŒ์ง€ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ ํ›„ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” index ๊ฐ€ name ์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด ๋‚˜๋จธ์ง€๋กœ ๊ณ„์‚ฐ์„ ํ–ˆ๋‹ค.

์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” -1 ์ด ๋˜๋ฉด ์ตœ๋Œ€ index ๋กœ ๋ฐ”๊พธ์–ด ์คฌ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ํ†ตํ•ด index ๋ฅผ ์˜ฎ๊ธด ํ›„ ๋˜‘๊ฐ™์ด ๋ฐ˜๋ณตํ•˜๋ฉด ๋œ๋‹ค !


Categories:

Updated:

Leave a comment