๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์กฐ์ด์Šคํ‹ฑ - C++ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์กฐ์ด์Šคํ‹ฑ - C++

.23 2024. 4. 11. 09:43
๋ฌธ์ œ

์กฐ์ด์Šคํ‹ฑ์œผ๋กœ ์•ŒํŒŒ๋ฒณ ์ด๋ฆ„์„ ์™„์„ฑํ•˜์„ธ์š”. ๋งจ ์ฒ˜์Œ์—” A๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
ex) ์™„์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด๋ฆ„์ด ์„ธ ๊ธ€์ž๋ฉด AAA, ๋„ค ๊ธ€์ž๋ฉด AAAA

์กฐ์ด์Šคํ‹ฑ์„ ๊ฐ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

โ–ฒ - ๋‹ค์Œ ์•ŒํŒŒ๋ฒณ
โ–ผ - ์ด์ „ ์•ŒํŒŒ๋ฒณ (A์—์„œ ์•„๋ž˜์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด Z๋กœ)
โ—€ - ์ปค์„œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ (์ฒซ ๋ฒˆ์งธ ์œ„์น˜์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์— ์ปค์„œ)
โ–ถ - ์ปค์„œ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ (๋งˆ์ง€๋ง‰ ์œ„์น˜์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์— ์ปค์„œ)

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ "JAZ"๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ์ฒซ ๋ฒˆ์งธ ์œ„์น˜์—์„œ ์กฐ์ด์Šคํ‹ฑ์„ ์œ„๋กœ 9๋ฒˆ ์กฐ์ž‘ํ•˜์—ฌ J๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.
- ์กฐ์ด์Šคํ‹ฑ์„ ์™ผ์ชฝ์œผ๋กœ 1๋ฒˆ ์กฐ์ž‘ํ•˜์—ฌ ์ปค์„œ๋ฅผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž ์œ„์น˜๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
- ๋งˆ์ง€๋ง‰ ์œ„์น˜์—์„œ ์กฐ์ด์Šคํ‹ฑ์„ ์•„๋ž˜๋กœ 1๋ฒˆ ์กฐ์ž‘ํ•˜์—ฌ Z๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ 11๋ฒˆ ์ด๋™์‹œ์ผœ "JAZ"๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ๊ฐ€ ์ตœ์†Œ ์ด๋™์ž…๋‹ˆ๋‹ค.

๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ์ด๋ฆ„ name์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ด๋ฆ„์— ๋Œ€ํ•ด ์กฐ์ด์Šคํ‹ฑ ์กฐ์ž‘ ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ
  • name์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • name์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
์ž…์ถœ๋ ฅ ์˜ˆ
name return
"JEROEN" 56
"JAN" 23

 


๊ทธ๋ฆฌ๋””๋ฅผ ํ™œ์šฉํ•œ ๋ฌธ์ œ.

 

๊ทธ๋ฆฌ๋””์— ์›Œ๋‚™ ์•ฝํ•ด์„œ ์ ‘๊ทผ๋„ ๋ชปํ•˜๊ณ  2์ผ ๋‚ด๋‚ด ๋‚จ์˜ ์ฝ”๋“œ ์†Œํ™”๋งŒ ํ•˜๋‹ค ๊ฒจ์šฐ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

์กฐ์ด์Šคํ‹ฑ์„ ์ƒ/ํ•˜๋กœ ์›€์ง์ด๋Š” ํšŸ์ˆ˜๋Š” ์–ด์ฐจํ”ผ ์•ŒํŒŒ๋ฒณ๋ณ„๋กœ ๊ณ ์ •๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ขŒ/์šฐ ์ด๋™ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์ด ๋•Œ ์ค‘์š”ํ•œ๊ฑด ์—ฐ์†๋œ A์˜ ์ˆ˜์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ์ž…๋ ฅ๋ฐ›์€ ์ด๋ฆ„์˜ ๊ธธ์ด๋งŒํผ loop๋ฅผ ๋Œ๋ฉด์„œ

 

  • ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ทธ๋ƒฅ ์ญ‰ ์ด๋™ํ•˜๊ธฐ
  • (i + 1)๋ฒˆ์งธ๋ถ€ํ„ฐ ์—ฐ์†๋œ A๊ฐ€ ๋“ฑ์žฅํ•  ๊ฒฝ์šฐ, ์—ฐ์†๋œ A ๋์˜ ๋‹ค์Œ ์œ„์น˜๋ฅผ cursor๋ผ ํ•  ๋•Œ
    • ์•ž์—์„œ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋‹ค๊ฐ€ i๋ฒˆ์งธ ๊ธ€์ž์—์„œ ๋‹ค์‹œ ๋’ค๋กœ(์™ผ์ชฝ์œผ๋กœ) ๋Œ์•„๊ฐ€๊ธฐ
    • ๋’ค์—์„œ๋ถ€ํ„ฐ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋‹ค๊ฐ€ ๋‹ค์‹œ i๋ฒˆ์งธ ๊ธ€์ž๊นŒ์ง€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ

์˜ ๊ธธ์ด ์ค‘ ๊ฐ€์žฅ ์งง์€ ๊ฑฐ๋ฆฌ๋ฅผ ๋น„๊ตํ•ด์ค€๋‹ค.

 

 

์ฝ”๋“œ
#include <string>
#include <vector>

using namespace std;

int min(int a, int b) {
    return a > b ? b : a;
}

int solution(string name) {
    int answer = 0;
    int len = name.length();
    int move = len - 1;

    for(int i = 0; i < len; i++) {
        answer += (name[i] - 'A' <= 13 ? name[i] - 'A' : 26 - (name[i] - 'A'));
        int cursor = i + 1;

        while(cursor < len && name[cursor] == 'A') cursor++;

        move = min(move, i + len - cursor + min(i, len - cursor));
    }

    return answer + move;
}
Comments