๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/Programmers

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

๐Ÿ’ปQ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์กฐ์ด์Šคํ‹ฑ

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

programmers.co.kr

 

๐Ÿ’กA



public class Solution {
	
	public int solution(String name) {
		int answer = 0;
		int len = name.length();  //name ๊ธธ์ด ์ €์žฅ
		
		//์ œ์ผ ์งง์€ ์ขŒ, ์šฐ ์ด๋™์€ ๋งจ ์˜ค๋ฅธ์ชฝ ์ด๋™ํ•  ๋•Œ
		int min = len - 1;
		
		for(int i=0; i<len; i++) {
			char c = name.charAt(i);
			//์ƒํ•˜ ์ด๋™์— ๋Œ€ํ•œ ์กฐ์ž‘ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ๊ฒƒ์œผ๋กœ ์„ ํƒ
			answer += Math.min(c - 'A', 'Z' - c + 1);
			//๋‹ค์Œ ๊ธ€์ž๋ถ€ํ„ฐ A๊ฐ€ ์—ฐ์†์œผ๋กœ ๋‚˜์˜ฌ ๋•Œ, ์–ด๋А ๋ฐฉํ–ฅ์œผ๋กœ ์ปค์„œ๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ํšŸ์ˆ˜๊ฐ€ ์ ์„์ง€ ์ฒดํฌ
			int next = i + 1;
			//๋‹ค์Œ ๋‹จ์–ด๊ฐ€ A์ด๊ณ , ๋‹จ์–ด๊ฐ€ ๋๋‚˜๊ธฐ ์ „๊นŒ์ง€ next ์ฆ๊ฐ€
			while(next < len && name.charAt(next) == 'A') {
				next++;
			}
			//i * 2๋Š” ๊ธฐ์กด ์ขŒ์šฐ์ด๋™ ๋ฐฉํ–ฅ์„ ๋ฐ”๊ฟ” ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ
			//์ฒซ๊ธ€์ž์—์„œ ๋๊นŒ์ง€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ๋งŒ ์ด๋™ํ•˜๋Š”๊ฒƒ๊ณผ i๋ฒˆ๊นŒ์ง€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜์—ฌ next๊นŒ์ง€ ์ด๋™ํ•˜๋Š”๊ฒƒ์ค‘ ์กฐ์ž‘ ํšŸ์ˆ˜๊ฐ€ ์ ์€ ๊ฒƒ์„ ์„ ํƒ
			min = Math.min(min, (i * 2) + len - next);
		}
		answer += min;
		return answer;
		
	}
}

 

 

๐Ÿ‘€์ฐธ๊ณ 

 

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

https://programmers.co.kr/learn/courses/30/lessons/42860# ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์กฐ์ด์Šคํ‹ฑ ์กฐ์ด์Šคํ‹ฑ์œผ๋กœ ์•ŒํŒŒ๋ฒณ ์ด๋ฆ„์„ ์™„์„ฑํ•˜์„ธ์š”. ๋งจ ์ฒ˜์Œ์—” A๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ex) ์™„์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด๋ฆ„์ด ์„ธ ๊ธ€์ž๋ฉด AAA,..

excited-hyun.tistory.com