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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

by ์ฃผ๋ฐœ2 2020. 1. 22.
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/42883

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

 

programmers.co.kr

 

์ฝ”๋“œ

class Solution {
	public static String solution(String number, int k) {
		StringBuilder sb = new StringBuilder(number);
		int delCount = 0;
		int index = 1;
		int i = 0;
		
		while(delCount != k) {
			
			// 4 1 7 7 ... <- 1 7 ๋น„๊ตํ•ด์„œ ๋’ค์— ์ˆซ์ž๊ฐ€ ๋” ํฌ๋ฉด ์•ž ์ˆซ์ž ์ œ๊ฑฐ
			// ์ œ๊ฑฐํ–ˆ์œผ๋‹ˆ ์•ž index(4, 7)๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด index --, 
			// ์ œ๊ฑฐํ•œ delCount ++;
			if(index >= 1 && sb.charAt(index-1) < sb.charAt(index)) {
				sb.deleteCharAt(index-1);
				index --;
				delCount ++;
			}
			else {
				// index๊ฐ€ ๊ฐ€์žฅ ๋๊ฐ’์ผ๋•Œ
				if(index == sb.length() - 1 && sb.charAt(index) <= sb.charAt(index-1)) {
					sb.deleteCharAt(index);
					delCount ++;
					index --;
				}
				else {
					index ++;
				}
			}
		}
		
		return sb.toString();
	}
}

 

ํ’€์ด

๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ๋งˆ๋•…ํžˆ ๋– ์˜ค๋ฅด๋Š” ๋ฐฉ๋ฒ•์ด ์—†์–ด์„œ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค ..

์ƒ๊ฐ๋ณด๋‹ค ๊ฝค๋‚˜ ๋ณต์žกํ•˜๊ณ , ๋‹ค๋ฅธ ํ’€์ด๋“ค์„ ๋ณด๋ฉด ์Šคํƒ์„ ์ด์šฉํ•ด ํ‘ผ ํ’€์ด๊ฐ€ ๋งŽ์•˜๋‹ค.

 

์ผ๋‹จ ์œ„ํ’€์ด๋Š”,, ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด ๋ณ€์ˆ˜ number์„ ์‚ญ์ œํ•˜๊ธฐ ์šฉ์ดํ•œ StringBuilder๋กœ ๋ณ€ํ™˜ํ•ด์„œ ํ‘ผ๋‹ค.

๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฐ€์žฅ ์•ž์—์žˆ๋Š” ์ˆซ์ž๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๊ฐ€ ๋‚˜์™€์•ผ ํ•˜๊ณ , ๋น„๊ตํ•˜๋ฉด์„œ์‚ญ์ œํ•˜๋Š” ์‹์œผ๋กœ ํ‘ผ๋‹ค. ์‚ญ์ œํ•œ ๊ฐฏ์ˆ˜์™€ k๊ฐ€ ๊ฐ™์„๋•Œ while๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค.

 

number = "41772528 " ์™€ ๊ฐ™์„๋•Œ

index = 1์ผ๋•Œ... index-1(4) ์™€ index(1)์„ ๋น„๊ตํ•œ๋‹ค. => 4๊ฐ€ ๋”ํฌ๋ฏ€๋กœ index๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

index = 2์ผ๋•Œ... index-1(1) ์™€ index(7)์„ ๋น„๊ตํ•œ๋‹ค. => 7์ด ๋” ํฌ๋ฏ€๋กœ index-1(1)์„ ์‚ญ์ œํ•˜๊ณ , delCount๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค. ๊ทธ ์ „์— ๋น„๊ตํ•œ 4์™€ ๋น„๊ตํ•˜๊ธฐ์œ„ํ•ด index๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

index = 1์ผ๋•Œ... index-1(4)์™€ index(7)์„ ๋น„๊ตํ•œ๋‹ค. => 7์ด ๋” ํฌ๋ฏ€๋กœ index-1(4)์„ ์‚ญ์ œํ•˜๊ณ , delCount๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค. index๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

index = 0์ผ๋•Œ... index๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ์กฐ๊ฑด์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š”๋ฐ,, ์ฃผ์˜ํ• ์ ์€ ๊ฐ™์€์ˆซ์ž๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚œ ์ˆซ์ž์ด๋‹ค.

number = "1000000" , k = 3

์œ„์™€ ๊ฐ™์€ ์ˆซ์ž๋Š” index๊ฐ€ ๊ณ„์† ์ฆ๊ฐ€ํ•ด๋„ ์ˆซ์ž๋ฅผ ์‚ญ์ œํ•˜์ง€์•Š๋Š”๋‹ค.

๋”ฐ๋ผ์„œ index์˜ ๊ฐ’์ด number์˜ ๊ธธ์ด์™€ ๊ฐ™๊ณ , index-1 ๊ฐ’์ด index ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์„๋•Œ index๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€