๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/42860
์ํ๋ ์ด๋ฆ์ ์์ฑํ๊ธฐ ์ํด์ ์กฐ์ด์คํฑ์ ์ต์ํ ๋ช ๋ฒ ์กฐ์ํด์ผํ๋ ์ง ๋ฆฌํดํ๋ ๋ฌธ์ .
ํ์ด
์ด๋ฒ ๋ฌธ์ ๊ฐ ์ฌํ๊น์ง ํ์ด๋ณธ 2๋จ๊ณ ๋ฌธ์ ์ค์ ์ ์ผ ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค.
๋ด ๋ฐฉ์๋๋ก ๋ช ๋ฒ์ ์๋ํด๋ดค์ง๋ง ๋ช ๊ฐ์ ์ผ์ด์ค์์ ๊ณ์ ์คํจํด์, ๊ฒฐ๊ตญ ๊ตฌ๊ธ ์ ์๋๋ค๊ป ๊ฐ๋ฅด์นจ์ ๋ฐ์๋ค.
์ด๊ธฐ์ ์ด๋ฆ์ 'A' ๋ก๋ง ์ด๋ฃจ์ด์ ธ์์ผ๋ฉฐ ์กฐ์ด์คํฑ์ ์ํ์ข์ฐ๋ก ์์ง์ฌ์ ์ํ๋ ์ด๋ฆ์ ์์ฑํด์ผํ๋ค.
์กฐ์ด์คํฑ์ ์กฐ์์ ์๋์ ๊ฐ๋ค.
โฒ - ๋ค์ ์ํ๋ฒณ
โผ - ์ด์ ์ํ๋ฒณ (A์์ ์๋์ชฝ์ผ๋ก ์ด๋ํ๋ฉด Z๋ก)
โ - ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ด๋ (์ฒซ ๋ฒ์งธ ์์น์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ๋ง์ง๋ง ๋ฌธ์์ ์ปค์)
โถ - ์ปค์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ (๋ง์ง๋ง ์์น์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์ปค์)
๋จผ์ ์กฐ์ด์คํฑ์ ์ ๋๋ ์๋๋ก ์กฐ์ํ ๋, ์ต์ํ์ ํ์๋ก ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์.
๋ง์ฝ 'A'๋ฅผ 'C'๋ก ๋ง๋ค๊ณ ์ถ๋ค๊ณ ํ์. ์ด๋ ์กฐ์ด์คํฑ์ ์๋ก 2๋ฒ ์กฐ์ํด์ C๋ก ๋ง๋ค ์๋ ์์ง๋ง,
์๋๋ก 24๋ฒ ์กฐ์ํด์ C๋ฅผ ๋ง๋ค ์๋ ์๋ค.( A -> Z -> Y -> X -> ... -> C ์)
๋ฌธ์ ๋ผ๋ฆฌ๋ +, - ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค. ์์คํค ์ฝ๋๋ก ๋ฐ๋์ด์ ๊ณ์ฐ๋๋ค.
๋ฐ๋ผ์ 'C' - 'A' ๋ฅผ ํ๋ฉด ์์คํค์ฝ๋ ์ 2๊ฐ ์ฐจ์ด๋๊ธฐ ๋๋ฌธ์ 2๊ฐ ๋ฆฌํด๋๋ค.
์ํ๋ ์ํ๋ฒณ์ ๋ง๋๋ ๊ฒฝ์ฐ๋ 2๊ฐ์ง๊ฐ ์๋ค.
1. (์ํ๋ ์ํ๋ฒณ - 'A') ๋ฅผ ํ ํ์๋งํผ ์กฐ์ด์คํฑ์ ์๋ก ์กฐ์ํ๋ค.
2. (26 - (์ํ๋ ์ํ๋ฒณ - 'A')) ๋ฅผ ํ ํ์๋งํผ ์กฐ์ด์คํฑ์ ์๋๋ก ์กฐ์ํ๋ค.
์ด๋ 26์์ ๋นผ์ฃผ๋ ์ด์ ๋ ์ํ๋ฒณ์ ์ด ๊ฐ์๊ฐ 26๊ฐ์ด๊ธฐ ๋๋ฌธ์.
์ ๋๋ ์๋๋ก ์กฐ์ํ๋ ๊ฒฝ์ฐ๋ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์๋ค. ํ์ง๋ง ๋ฌธ์ ๋ ์ข์ฐ๋ก ์กฐ์ํ๋ ๊ฒฝ์ฐ์๋ค.
์ปค์๋ฅผ ์ํ๋ฒณ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ์นธ์ผ๋ก ์ด๋ํ๊ธฐ ์ํด์๋ ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์กฐ์ด์คํฑ์ ์กฐ์ํด์ผํ๋ค.
์ด๋ ์กฐ์ด์คํฑ ์กฐ์ํ์๊ฐ ์ต์๊ฐ ๋๋๋กํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
์ฐ์๋ A์ ์๋ค๋ฅผ ๊ฐ๊ฐ i์ ind๋ผ๊ณ ํ์ ๋,
์ข์ฐ ์ด ์ด๋ํ์์ ์ต์๊ฐ์ ์์ ๊ฐ์ด ์ ์ํ ์ ์๋ค. (๊ตฌ๊ธ์์ ์ฐธ๊ณ ํ ์์ด๋์ด)
answer = (๊ฐ ์๋ฆฌ๋ง๋ค ์ํ ์กฐ์ ํ์ + ์ข์ฐ ์ต์ ์ด๋ํ์ ํฉ) ์ด ๋๋ค.
์ฝ๋ ์์ฑ
|
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(string name) {
int answer = 0;
int left_right = name.length() - 1;
for(int i = 0; i<name.length(); i++){
answer += min(name[i] - 'A', 26 - (name[i] - 'A'));
int end = i + 1;
while(end < name.length() && name[end] == 'A')
end++;
left_right = min(left_right, i + (int)name.length() - end + min(i, (int)name.length() - end));
}
answer += left_right;
return answer;
}
|
cs |
๋ณด๊ณ ์ดํดํ๋ ค๊ณ ํด๋ ์ด๋ ค์ด ์ด๋ฐ ์์ด๋์ด๋ฅผ ์๊ฐํด๋ด์๋ ๋ถ๋ค์ ์ฒ์ฌ์ธ๋ฏ ํ๋ค.
์ฝ๋ฉํ ์คํธ์ ๊ธธ์ ๋ฉ๊ณ ๋ ํํ๋ค...
'ํ๋ก๊ทธ๋๋จธ์ค > 2๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๊ฐ์ฅ ํฐ ์ (0) | 2022.06.29 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๊ตฌ๋ช ๋ณดํธ (0) | 2022.06.23 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ํ๊ฒ ๋๋ฒ (0) | 2022.06.20 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ํ๋ฆฐํฐ (0) | 2022.06.15 |