Programmers #26

์ด๊ฐ•์šฉยท2023๋…„ 7์›” 11์ผ
0

Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
25/58

์‹œ์ € ์•”ํ˜ธ

๐Ÿ“‘ ๋ฌธ1) ์–ด๋–ค ๋ฌธ์žฅ์˜ ๊ฐ ์•ŒํŒŒ๋ฒณ์„ ์ผ์ •ํ•œ ๊ฑฐ๋ฆฌ๋งŒํผ ๋ฐ€์–ด์„œ ๋‹ค๋ฅธ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊พธ๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‹œ์ € ์•”ํ˜ธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "AB"๋Š” 1๋งŒํผ ๋ฐ€๋ฉด "BC"๊ฐ€ ๋˜๊ณ , 3๋งŒํผ ๋ฐ€๋ฉด "DE"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. "z"๋Š” 1๋งŒํผ ๋ฐ€๋ฉด "a"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด s์™€ ๊ฑฐ๋ฆฌ n์„ ์ž…๋ ฅ๋ฐ›์•„ s๋ฅผ n๋งŒํผ ๋ฏผ ์•”ํ˜ธ๋ฌธ์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ๋ณด์„ธ์š”.


์ œํ•œ ์กฐ๊ฑด

  • ๊ณต๋ฐฑ์€ ์•„๋ฌด๋ฆฌ ๋ฐ€์–ด๋„ ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค.
  • s๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ๊ณต๋ฐฑ์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • s์˜ ๊ธธ์ด๋Š” 8000์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • n์€ 1 ์ด์ƒ, 25์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

snresult
"AB"1"BC"
"z"1"a"
"a B z"4"e F d"

๋‚˜์˜ ํ’€์ด

package programmers;

public class CaeserCipher {
	
	public static String solution(String s, int n) {
        
        StringBuilder sb = new StringBuilder();
       
        
        for(int i = 0; i < s.length(); i++ ) {
        	char c = s.charAt(i);
        	
        	if(Character.isUpperCase(c)) {
        		c = (char)((c - 'A' + n) % 26 + 'A');
        	}else if(Character.isLowerCase(c)) {
                c = (char)((c - 'a' + n) % 26 + 'a');
            }
            sb.append(c);
        	
        }
        
        return sb.toString();
    }
	
	public static void main(String[] args) {
		solution("a B z", 4);
	}
	
	

}

๋‚˜์˜ ์ƒ๊ฐ

๋งค๊ฐœ๋ณ€์ˆ˜ s์™€, ๊ฑฐ๋ฆฌ๋งŒํผ ๋ฏธ๋Š” n์„ ์ด์šฉํ•˜์—ฌ, ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์‹œ์ € ์•”ํ˜ธ(๊ฐ ๋ฌธ์ž๋ฅผ ์ผ์ •ํ•œ ๊ฑฐ๋ฆฌ๋งŒํผ ์ด๋™์‹œํ‚ค๋Š” ๋ฐฉ์‹์˜ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•)๋ฅผ ๋“ค์—ˆ๋˜ ์ƒ๊ฐ์€, ์•ŒํŒŒ๋ฒณ a, A, z, Z ์ดํ›„ ๋‹ค์Œ์— ์˜ค๋Š” ๋ฌธ์ž๋Š” ๋ฐ˜๋ณตํ•˜์—ฌ ๋‚˜์™€์•ผ ์ด๋ฅผ ๊ตฌํ˜„ํ•  ๋กœ์ง์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ๊ฒฐ๊ตญ์€ ์•„์Šคํ‚ค ์ฝ”๋“œ์™€ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋กœ์ง์„ ๊ฒฐํ•ฉํ•˜๋ฉด ๋œ๋‹ค.
StringBuilder ๋Š” ๋ฌธ์ž์˜ ์ถ”๊ฐ€, ๋˜๋Š” ์ œ๊ฑฐ๊ฐ€ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, ๋งค๊ฐœ๋ณ€์ˆ˜ s์˜ ๊ธธ์ด ๋งŒํผ ์ˆœํšŒ๋ฅผ ํ•˜์—ฌ, char c ์— s.charAt(i)๋ฅผ ๋‹ด์•„ c๊ฐ€ ๋Œ€๋ฌธ์ž์ธ์ง€, ์†Œ๋ฌธ์ž์ธ์ง€๋ฅผ ํŒ๋ณ„ํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ StringBuilder ๊ฐ์ฒด์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ํ•ต์‹ฌ ๋กœ์ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

if(Character.isUpperCase(c)) {
	c = (char)((c - 'A' + n) % 26 + 'A');
}else if(Character.isLowerCase(c)) {
	c = (char)((c - 'a' + n) % 26 + 'a');
}

์ด๋ฅผ ์š”์•ฝํ•˜์ž๋ฉด, char ํƒ€์ž… c - 'A'์˜ ์—ฐ์‚ฐ์€ - ์—ฐ์‚ฐ์ด ์žˆ๊ธฐ๋•Œ๋ฌธ์— intํ˜•์œผ๋กœ ์ž๋™ ํ˜•๋ณ€ํ™˜ ๊ฐ€์ •์„ ๊ฑฐ์น˜๊ธฐ๋•Œ๋ฌธ์— ASCII๋กœ ํ˜•๋ณ€ํ™˜๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ % 26 ํ•˜๋Š” ์ด์œ ๋Š” ์•ŒํŒŒ๋ฒณ์ด 26๊ฐœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 'z' ์ดํ›„๋กœ๋Š” ๋‹ค์‹œ 'a'๋กœ ํšŒ์ „ํ•ด์•ผ ํ•˜๊ณ , ์ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฒ”์œ„์—์„œ ๋ฒ—์–ด๋‚œ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ + 'A' ๋˜๋Š” + 'a' ํ•˜๋ฏ€๋กœ์จ ๋‹ค์‹œ ์›๋ž˜ ๋ฒ”์ฃผ ๋‚ด์— ์žˆ๋„๋ก ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ์†Œ๋ฌธ์ž๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๋‹ค. ์ด์™ธ์— ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด(์ฆ‰, ๊ณต๋ฐฑ์ธ ๊ฒฝ์šฐ) ๋ฌธ์ž ๊ทธ๋Œ€๋กœ sb์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.


์ตœ์†Œ์ง์‚ฌ๊ฐํ˜•

๐Ÿ“‘ ๋ฌธ2) ๋ช…ํ•จ ์ง€๊ฐ‘์„ ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ์—์„œ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ชจ์–‘๊ณผ ํฌ๊ธฐ์˜ ๋ช…ํ•จ๋“ค์„ ๋ชจ๋‘ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ, ์ž‘์•„์„œ ๋“ค๊ณ  ๋‹ค๋‹ˆ๊ธฐ ํŽธํ•œ ์ง€๊ฐ‘์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ง€๊ฐ‘์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋””์ž์ธํŒ€์€ ๋ชจ๋“  ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ํ‘œ๋Š” 4๊ฐ€์ง€ ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋ช…ํ•จ ๋ฒˆํ˜ธ๊ฐ€๋กœ ๊ธธ์ด์„ธ๋กœ ๊ธธ์ด
16050
23070
36030
48040

๊ฐ€์žฅ ๊ธด ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๊ฐ€ ๊ฐ๊ฐ 80, 70์ด๊ธฐ ๋•Œ๋ฌธ์— 80(๊ฐ€๋กœ) x 70(์„ธ๋กœ) ํฌ๊ธฐ์˜ ์ง€๊ฐ‘์„ ๋งŒ๋“ค๋ฉด ๋ชจ๋“  ๋ช…ํ•จ๋“ค์„ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 2๋ฒˆ ๋ช…ํ•จ์„ ๊ฐ€๋กœ๋กœ ๋ˆ•ํ˜€ ์ˆ˜๋‚ฉํ•œ๋‹ค๋ฉด 80(๊ฐ€๋กœ) x 50(์„ธ๋กœ) ํฌ๊ธฐ์˜ ์ง€๊ฐ‘์œผ๋กœ ๋ชจ๋“  ๋ช…ํ•จ๋“ค์„ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ์˜ ์ง€๊ฐ‘ ํฌ๊ธฐ๋Š” 4000(=80 x 50)์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 2์ฐจ์› ๋ฐฐ์—ด sizes๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ช…ํ•จ์„ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ง€๊ฐ‘์„ ๋งŒ๋“ค ๋•Œ, ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ

  • sizes์˜ ๊ธธ์ด๋Š” 1์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • sizes์˜ ์›์†Œ๋Š” [w,h] ํ˜•์‹์ž…๋‹ˆ๋‹ค.
    • w๋Š” ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • h๋Š” ๋ช…ํ•จ์˜ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค,
    • w์™€ h๋Š” 1์ด์ƒ 1,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

sizesresult
[[60, 50], [30, 70], [60, 30], [80, 40]]4000
[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]]120
[[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

๋ช…ํ•จ๋“ค์„ ์ ์ ˆํžˆ ํšŒ์ „์‹œ์ผœ ๊ฒน์ณค์„ ๋•Œ, 3๋ฒˆ์งธ ๋ช…ํ•จ(๊ฐ€๋กœ: 8, ์„ธ๋กœ: 15)์ด ๋‹ค๋ฅธ ๋ชจ๋“  ๋ช…ํ•จ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ํฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋Š” 3๋ฒˆ์งธ ๋ช…ํ•จ์˜ ํฌ๊ธฐ์™€ ๊ฐ™์œผ๋ฉฐ, 120(=8 x 15)์„ return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

๋ช…ํ•จ๋“ค์„ ์ ์ ˆํžˆ ํšŒ์ „์‹œ์ผœ ๊ฒน์ณค์„ ๋•Œ, ๋ชจ๋“  ๋ช…ํ•จ์„ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋Š” 133(=19 x 7)์ž…๋‹ˆ๋‹ค.


๋‚˜์˜ ํ’€์ด

package programmers;

public class LeastReactangle {
	public static int solution(int[][] sizes) {
       
		int maxWidth = 0;
		int maxHeight = 0;
		
		for(int[] size : sizes) {
			int w = Math.max(size[0], size[1]);
			int h = Math.min(size[0], size[1]);
			
			
			maxWidth = Math.max(maxWidth, w);
			maxHeight = Math.max(maxHeight, h);
					
			
		}
		
		return maxWidth * maxHeight;
		
		
    }
	
	public static void main(String[] args) {
		solution(new int[][] {{60,50},{30,70},{60,30},{80,40}});
	}
}

[1์ฐจ] ๋น„๋ฐ€์ง€๋„

๐Ÿ“‘ ๋ฌธ3) ๋„ค์˜ค๋Š” ํ‰์†Œ ํ”„๋กœ๋„๊ฐ€ ๋น„์ƒ๊ธˆ์„ ์ˆจ๊ฒจ๋†“๋Š” ์žฅ์†Œ๋ฅผ ์•Œ๋ ค์ค„ ๋น„๋ฐ€์ง€๋„๋ฅผ ์†์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋น„๋ฐ€์ง€๋„๋Š” ์ˆซ์ž๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•ด์•ผ ํ•œ๋‹ค. ๋‹คํ–‰ํžˆ ์ง€๋„ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•  ๋ฐฉ๋ฒ•์„ ์ ์–ด๋†“์€ ๋ฉ”๋ชจ๋„ ํ•จ๊ป˜ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

  1. ์ง€๋„๋Š” ํ•œ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ, ๊ฐ ์นธ์€ ๊ฐ ์นธ์€ "๊ณต๋ฐฑ"(" ") ๋˜๋Š” "๋ฒฝ"("#") ๋‘ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

  2. ์ „์ฒด ์ง€๋„๋Š” ๋‘ ์žฅ์˜ ์ง€๋„๋ฅผ ๊ฒน์ณ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ "์ง€๋„ 1"๊ณผ "์ง€๋„ 2"๋ผ๊ณ  ํ•˜์ž. ์ง€๋„ 1 ๋˜๋Š” ์ง€๋„ 2 ์ค‘ ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ์ด๋‹ค. ์ง€๋„ 1๊ณผ ์ง€๋„ 2์—์„œ ๋ชจ๋‘ ๊ณต๋ฐฑ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๊ณต๋ฐฑ์ด๋‹ค.

  3. "์ง€๋„ 1"๊ณผ "์ง€๋„ 2"๋Š” ๊ฐ๊ฐ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๋‹ค.

  4. ์•”ํ˜ธํ™”๋œ ๋ฐฐ์—ด์€ ์ง€๋„์˜ ๊ฐ ๊ฐ€๋กœ์ค„์—์„œ ๋ฒฝ ๋ถ€๋ถ„์„ 1, ๊ณต๋ฐฑ ๋ถ€๋ถ„์„ 0์œผ๋กœ ๋ถ€ํ˜ธํ™”ํ–ˆ์„ ๋•Œ ์–ป์–ด์ง€๋Š” ์ด์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์˜ ๋ฐฐ์—ด์ด๋‹ค.

๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์˜ ๋น„์ƒ๊ธˆ์„ ์†์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก, ๋น„๋ฐ€์ง€๋„์˜ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•˜๋Š” ์ž‘์—…์„ ๋„์™€์ค„ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.


์ž…๋ ฅ ํ˜•์‹

์ž…๋ ฅ์œผ๋กœ ์ง€๋„์˜ ํ•œ ๋ณ€ ํฌ๊ธฐ n๊ณผ 2๊ฐœ์˜ ์ •์ˆ˜ ๋ฐฐ์—ด arr1, arr2๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

  • 1 โ‰ฆ n โ‰ฆ 16
  • arr1, arr2๋Š” ๊ธธ์ด n์ธ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„๋‹ค.
  • ์ •์ˆ˜ ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ x๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ์˜ ๊ธธ์ด๋Š” n ์ดํ•˜์ด๋‹ค. ์ฆ‰, 0 โ‰ฆ x โ‰ฆ 2n - 1์„ ๋งŒ์กฑํ•œ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

  • ์›๋ž˜์˜ ๋น„๋ฐ€์ง€๋„๋ฅผ ํ•ด๋…ํ•˜์—ฌ #, ๊ณต๋ฐฑ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ถœ๋ ฅํ•˜๋ผ.

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ’
n5
arr1[9, 20, 28, 18, 11]
arr2[30, 1, 21, 17, 28]
์ถœ๋ ฅ["#####","# # #", "### #", "# ##", "#####"]
๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ’
n6
arr1[46, 33, 33 ,22, 31, 50]
arr2[27 ,56, 19, 14, 14, 10]
์ถœ๋ ฅ["######", "### #", "## ##", " #### ", " #####", "### # "]

๋‚˜์˜ ํ’€์ด

package programmers;

import java.util.Arrays;

public class SecretMap {

    public static String[] solution(int n, int[] arr1, int[] arr2) {
        String[] arr1Decoding = new String[n];
        String[] arr2Decoding = new String[n];

        for(int i = 0; i < arr1.length; i++) {
            StringBuilder sb1 = new StringBuilder();
            StringBuilder sb2 = new StringBuilder();

            int value = arr1[i];
            while(value > 0) {
                sb1.append(value % 2);
                value /= 2;
            }
            arr1Decoding[i] = sb1.reverse().toString();

            while(arr1Decoding[i].length() < n) {
                arr1Decoding[i] = "0" + arr1Decoding[i];
            }

            value = arr2[i];
            while(value > 0) {
                sb2.append(value % 2);
                value /= 2;
            }
            arr2Decoding[i] = sb2.reverse().toString();]\
            while(arr2Decoding[i].length() < n) {
                arr2Decoding[i] = "0" + arr2Decoding[i];
            }
        }
        String[] map = new String[n];
        for (int i = 0; i < n; i++) {
            int num1 = Integer.parseInt(arr1Decoding[i], 2);
            int num2 = Integer.parseInt(arr2Decoding[i], 2);
            int orResult = num1 | num2;
            

            map[i] = String.format("%" + n +"s", Integer.toBinaryString(orResult)).replace(' ', '0');
        }

        for(int i = 0; i < n; i++) {
            map[i] = map[i].replace('1', '#').replace('0', ' ');
        }
        System.out.println(Arrays.toString(map));

        return map;
    }

    public static void main(String[] args) {
        solution(6, new int[] {46,33,33,22,31,50}, new int[] {27,56,19,14,14,10});
    }
}

๋‚˜์˜ ์ƒ๊ฐ

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง€๋Š” intํ˜• ๋ฐฐ์—ด arr1, arr2๋ฅผ 2์ง„์ˆ˜๋กœ ๋‹ด๊ธฐ ์œ„ํ•œ String[] ํƒ€์ž…์˜ ๋ฐฐ์—ด ์„ ์–ธ๊ณผ StringBuilder ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜์—ฌ 2์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ๋‹ค.

int value = arr1[i];
            while(value > 0) {
                sb1.append(value % 2);
                value /= 2;
            }
            arr1Decoding[i] = sb1.reverse().toString();

            while(arr1Decoding[i].length() < n) {
                arr1Decoding[i] = "0" + arr1Decoding[i];
            }

            
            value = arr2[i];
            while(value > 0) {
                sb2.append(value % 2);
                value /= 2;
            }
            arr2Decoding[i] = sb2.reverse().toString();

            
            while(arr2Decoding[i].length() < n) {
                arr2Decoding[i] = "0" + arr2Decoding[i];
            }

๊ทธ๋ฆฌ๊ณ  ์ž๋ฆฌ์ˆ˜๋ฅผ ์ฒดํฌํ•˜์—ฌ ์ž๋ฆฌ์ˆ˜๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜ n๋ณด๋‹ค ์ž‘์œผ๋ฉด 0์„ ์ฑ„์›Œ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋งž์ถฐ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์œ„์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด arr1Decoding, arr2Decoing ๋ฐฐ์—ด์— 2์ง„์ˆ˜๊ฐ€ ๋‹ด๊ธฐ๊ฒŒ ๋˜๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ์ง์„ ํ†ตํ•ด ๋‘๊ฐœ์˜ ๋ฐฐ์—ด์„ OR ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•˜์—ฌ ๋”ํ•ด์ฃผ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์ž๋ฆฌ์ˆ˜๋ฅผ ์ฒดํฌํ•˜์—ฌ ๊ณต๋ฐฑ์— 0์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ๋ฅผ 1์€ #์œผ๋กœ, 0์€ ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌํ„ด

String[] map = new String[n];
        for (int i = 0; i < n; i++) {
            int num1 = Integer.parseInt(arr1Decoding[i], 2);
            int num2 = Integer.parseInt(arr2Decoding[i], 2);
            int orResult = num1 | num2;
            

            map[i] = String.format("%" + n +"s", Integer.toBinaryString(orResult)).replace(' ', '0');
        }

        for(int i = 0; i < n; i++) {
            map[i] = map[i].replace('1', '#').replace('0', ' ');
        }
        System.out.println(Arrays.toString(map));

        return map;

ํด๋ฆฐ ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ

package programmers;

import java.util.Arrays;

public class SecretMap {

    public static String[] solution(int n, int[] arr1, int[] arr2) {
        String[] map = new String[n];

        for (int i = 0; i < n; i++) {
            String binary = Integer.toBinaryString(arr1[i] | arr2[i]); 
            String formattedBinary = String.format("%" + n + "s", binary).replace(' ', '0'); 
            map[i] = formattedBinary.replace('1', '#').replace('0', ' '); 
        }

        System.out.println(Arrays.toString(map));

        return map;
    }

    public static void main(String[] args) {
        solution(6, new int[] {46,33,33,22,31,50}, new int[] {27,56,19,14,14,10});
    }
}

ํด๋ฆฐ์ฝ”๋“œ ๋ฆฌ๋ทฐ

๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ๋กœ์งํด๋ฆฐ์ฝ”๋“œ๋กœ ๊ตฌํ˜„๋œ ๋กœ์ง

๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ๋กœ์ง๊ณผ ํด๋ฆฐ ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋œ ๋กœ์ง์„ ๋น„๊ตํ•ด์„œ ๋ณด๋ฉด ์–ผ๋งˆ๋‚˜ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋ฅผ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋Š” 2์ง„์ˆ˜ ๋ณ€ํ™˜๊ณผ, 2์ง„์ˆ˜ OR์—ฐ์‚ฐ์„ ๋ณต์žกํ•œ ๊ณผ์ •์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค๋ฉด ํด๋ฆฐ์ฝ”๋“œ๋Š” ๊ฐ„๋‹จํ•œ Integer.toBinaryString() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ๋ถˆํ•„์š”ํ•œ StringBuilder ๊ฐ์ฒด ์„ ์–ธ ๋ฐ String[] ๋ฐฐ์—ด์˜ ์ƒ์„ฑ ์—†์ด String ๋ฌธ์ž ํ•˜๋‚˜๋งŒ ์„ ์–ธํ•˜์—ฌ
arr1[i]|arr2[i]์œผ๋กœ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ binary์— ํ• ๋‹นํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌ๊ฒŒ ์ค„ ์ผ์ˆ˜์žˆ์—ˆ๋‹ค. ์ถ”๊ฐ€๋กœ String.format(), String.replace() ๋ฉ”์„œ๋“œ๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜์—ฌ ์ž๋ฆฌ์ˆ˜ ๊ณ ์ • ๋ฐ ๊ณต๋ฐฑ์„ 0์œผ๋กœ ์ฑ„์šฐ๋Š” ๊ณผ์ •์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.


์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด

๐Ÿ“‘ ๋ฌธ4) ๋„ค์˜ค์™€ ํ”„๋กœ๋„๊ฐ€ ์ˆซ์ž๋†€์ด๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์—๊ฒŒ ์ˆซ์ž๋ฅผ ๊ฑด๋„ฌ ๋•Œ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พผ ์นด๋“œ๋ฅผ ๊ฑด๋„ค์ฃผ๋ฉด ํ”„๋กœ๋„๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ ์ฐพ๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พธ๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

  • 1478 โ†’ "one4seveneight"
  • 234567 โ†’ "23four5six7"
  • 10203 โ†’ "1zerotwozero3"

์ด๋ ‡๊ฒŒ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๊ฐ€ ์˜๋‹จ์–ด๋กœ ๋ฐ”๋€Œ์–ด์กŒ๊ฑฐ๋‚˜, ํ˜น์€ ๋ฐ”๋€Œ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ์ธ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. s๊ฐ€ ์˜๋ฏธํ•˜๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ฐธ๊ณ ๋กœ ๊ฐ ์ˆซ์ž์— ๋Œ€์‘๋˜๋Š” ์˜๋‹จ์–ด๋Š” ๋‹ค์Œ ํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ˆซ์ž์˜๋‹จ์–ด
0zero
1one
2two
3three
4four
5five
6six
7seven
8eight
9nine

์ œํ•œ์‚ฌํ•ญ

  • 1 โ‰ค s์˜ ๊ธธ์ด โ‰ค 50
  • s๊ฐ€ "zero" ๋˜๋Š” "0"์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • return ๊ฐ’์ด 1 ์ด์ƒ 2,000,000,000 ์ดํ•˜์˜ ์ •์ˆ˜๊ฐ€ ๋˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ž…๋ ฅ๋งŒ s๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

sresult
"one4seveneight"1478
"23four5six7"234567
"2three45sixseven"234567
"123"123

์ œํ•œ์‹œ๊ฐ„

  • ์ •ํ™•์„ฑ ํ…Œ์ŠคํŠธ : 10์ดˆ

๋‚˜์˜ ํ’€์ด

package programmers;

import java.util.HashMap;
import java.util.Map;

public class NumericString {
	
	public static int solution(String s) {
     
        Map<String, String> numList = new HashMap<>();
        numList.put("zero", "0");
        numList.put("one", "1");
        numList.put("two", "2");
        numList.put("three", "3");
        numList.put("four", "4");
        numList.put("five", "5");
        numList.put("six", "6");
        numList.put("seven", "7");
        numList.put("eight", "8");
        numList.put("nine", "9");
        
        
        
        for(Map.Entry<String, String> entry : numList.entrySet()) {
        	s = s.replaceAll(entry.getKey(), entry.getValue());
        }
       
        return Integer.parseInt(s);
    }
	
	public static void main(String[] args) {
		solution("one4seveneight");
	}
	

}

๋‚˜์˜ ํ’€์ด

Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Key์™€ value๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ˆซ์ž ๋ฌธ์ž (zero, one, two, three...)๋ฅผ key, value๋ฅผ (0,1,2,3...)์œผ๋กœ ์ €์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Map ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” Entry ๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•˜๋ฉด, Map์˜ key์™€ value๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ ์„ ํ™œ์šฉํ•˜์—ฌ, ๋งค๊ฐœ๋ณ€์ˆ˜ s์˜ key์™€ ๋งคํ•‘๋˜๋ฉด ์ด๋ฅผ value๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ Integer.parseInt()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž๋ฅผ ๋‹ค์‹œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌํ„ดํ•˜์˜€๋‹ค.


ํด๋ฆฐ ์ฝ”๋“œ ์ž‘์„ฑ

class Solution {
    public int solution(String s) {
        String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        for(int i = 0; i < strArr.length; i++) {
            s = s.replaceAll(strArr[i], Integer.toString(i));
        }
        return Integer.parseInt(s);
    }
}

for(int i = 0; i < strArr.length; i++) {
	s = s.replaceAll(strArr[i], Integer.toString(i));
}

ํ•ต์‹ฌ ๋กœ์ง์„ ๋ณด๋ฉด, String[] strArr = {"zero","one","two"...}; ๋ฐฐ์—ด์„ ์„ ์–ธ๊ณผ ๋™์‹œ์— ํ• ๋‹นํ•˜์—ฌ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด, ๋ฌธ์ž ๋ฐฐ์—ด์˜ ํ•ด๋‹น ๋ฌธ์ž์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ Integer.toString() ์œผ๋กœ ๋ฐ”๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌํ„ดํ•ด์ฃผ์—ˆ๋‹ค.


๋ฌธ์ž์—ด ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ

๐Ÿ“‘ ๋ฌธ5) ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋œ ๋ฆฌ์ŠคํŠธ strings์™€, ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค n๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด strings๊ฐ€ ["sun", "bed", "car"]์ด๊ณ  n์ด 1์ด๋ฉด ๊ฐ ๋‹จ์–ด์˜ ์ธ๋ฑ์Šค 1์˜ ๋ฌธ์ž "u", "e", "a"๋กœ strings๋ฅผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.


์ œํ•œ ์กฐ๊ฑด

  • strings๋Š” ๊ธธ์ด 1 ์ด์ƒ, 50์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • strings์˜ ์›์†Œ๋Š” ์†Œ๋ฌธ์ž ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • strings์˜ ์›์†Œ๋Š” ๊ธธ์ด 1 ์ด์ƒ, 100์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  strings์˜ ์›์†Œ์˜ ๊ธธ์ด๋Š” n๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค 1์˜ ๋ฌธ์ž๊ฐ€ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์—ฌ๋Ÿฟ ์ผ ๊ฒฝ์šฐ, ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„  ๋ฌธ์ž์—ด์ด ์•ž์ชฝ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

stringnreturn
["sun", "bed", "car"]1["car", "bed", "sun"]
["abce", "abcd", "cdx"] 2["abcd", "abce", "cdx"]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • "sun", "bed", "car"์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€ ๊ฐ๊ฐ "u", "e", "a" ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ strings๋ฅผ ์ •๋ ฌํ•˜๋ฉด ["car", "bed", "sun"] ์ž…๋‹ˆ๋‹ค.
  • "abce"์™€ "abcd", "cdx"์˜ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์€ "c", "c", "x"์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •๋ ฌ ํ›„์—๋Š” "cdx"๊ฐ€ ๊ฐ€์žฅ ๋’ค์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. "abce"์™€ "abcd"๋Š” ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด "abcd"๊ฐ€ ์šฐ์„ ํ•˜๋ฏ€๋กœ, ๋‹ต์€ ["abcd", "abce", "cdx"] ์ž…๋‹ˆ๋‹ค.

๋‚˜์˜ ํ’€์ด

์ž˜๋ชป ์ƒ๊ฐํ•œ ํ’€์ด

package programmers;

import java.util.Arrays;

public class TextAlignment {
	public static String[] solution(String[] strings, int n) {
        String[] answer = {};
        String[] sorts = new String[strings.length];
        
        
        
        for(int i = 0; i < strings.length; i++) {
        	sorts[i] = Character.toString(strings[i].charAt(n));	
        }
        
        Arrays.sort(sorts);
        System.out.println(Arrays.toString(sorts));
        System.out.println(Arrays.toString(strings));
        for(int i = 0; i < strings.length; i++) {
        	if(Character.toString(strings[i].charAt(n)).equals(sorts[i]) ) {
        		System.out.println(strings[i]);
        	}
        }
        return answer;
    }
	
	public static void main(String[] args) {
		
		solution(new String[] {"cdx", "abce", "abcd"}, 2);
	}
	

}

๋งค๊ฐœ๋ณ€์ˆ˜ Strings[] strings index ๋ณ„๋กœ x, c, c ๊นŒ์ง€ ๋ฝ‘์•„ ๋‚ด๋Š”๊ฑฐ ๊นŒ์ง€๋Š” ์„ฑ๊ณตํ–ˆ๋Š”๋ฐ, ํ•ด๋‹น ์ธ๋ฑ์Šค ๋ณ„๋กœ ์žฌ์ •๋ ฌ์„ ํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ํ•ด๊ฒฐํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€์•Š์•˜๋‹ค.

๋‹ค์Œ์€ ๋žŒ๋‹คํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•œ ์„ฑ๊ณต ๋กœ์ง์ด๋‹ค.

package programmers;

import java.util.Arrays;

public class TextAlignment {
    public static String[] solution(String[] strings, int n) {
        Arrays.sort(strings);
        Arrays.sort(strings, (s1, s2) -> s1.charAt(n) - s2.charAt(n));
        
        
        return strings;
    }

    public static void main(String[] args) {
        solution(new String[] {"cdx", "abce", "abcd"}, 2);
        
    }
}

๋‚˜์˜ ์ƒ๊ฐ

Arrays.sort(strings) ์€ ๋ฐฐ์—ด ์ „์ฒด๋ฅผ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ์ด๋•Œ์˜ ์ˆœ์„œ๋Š”

  • abcd,abce,cdx

Arrays.sort(strings, (s1, s2) -> s1.charAt(n) - s2.charAt(n) ๋Š” ๋‘ ๋ฌธ์ž์—ด s1๊ณผ s2๋ฅผ ๋น„๊ตํ•˜๋Š” Comparator๋ฅผ ์ •์˜ํ•œ๋‹ค.

  • abcd,abce ๋ฅผ ๋น„๊ตํ•˜์—ฌ, ๋‘ ๋ฌธ์ž์—ด์˜ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋ฌธ์ž๋Š” ๋‘˜ ๋‹ค c์ด๋ฏ€๋กœ, ๋ฌธ์ž์˜ ์ฐจ์ด๋Š” 0, ๋”ฐ๋ผ์„œ ๋‘ ๋ฌธ์ž์—ด์˜ ์ˆœ์„œ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ
  • abce,cdx๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋‘ ๋ฌธ์ž์—ด์˜ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋ฌธ์ž๋Š” c, x ์ด๋ฏ€๋กœ, c์™€ x์˜ ์ฐจ์ด๋Š” ์Œ์ˆ˜๊ฐ€ ๋˜๋ฏ€๋กœ abce๋Š” cdx๋ณด๋‹ค ์•ž์— ์˜ค๊ฒŒ ๋จ
  • abcd,cdx ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ cdx๋ณด๋‹ค ์•ž์— ์˜ค๊ฒŒ ๋จ

๋”ฐ๋ผ์„œ, ์™„์ „ํžˆ ์ •๋ ฌ๋œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด abcd,abce,cdx๋ฅผ ๋ฐ˜ํ™˜ํ•จ


๋žŒ๋‹ค, ์ŠคํŠธ๋ฆผ์„ ์“ฐ์ง€ ์•Š๋Š” ์•„์ด๋””์–ด

class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = {};
        ArrayList<String> arr = new ArrayList<>();
        for (int i = 0; i < strings.length; i++) {
            arr.add("" + strings[i].charAt(n) + strings[i]);
        }
        Collections.sort(arr);
        answer = new String[arr.size()];
        for (int i = 0; i < arr.size(); i++) {
            answer[i] = arr.get(i).substring(1, arr.get(i).length());
        }
        return answer;
    }
}

ํ’€์ด

  • ๋ฌธ์ž์—ด ๋ฐฐ์—ด์˜ ๋งจ์ฒ˜์Œ์— n๋ฒˆ์งธ์˜ ํ•ด๋‹น index๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€ ์‹œํ‚จ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Collections.sort(arr) ๋ฅผ ํ†ตํ•ด ์ •๋ ฌ์„ ์‹œํ‚ค๋Š”๋ฐ ์ด๋•Œ n๋ฒˆ์จฐ index๊ฐ€ ํฌํ•จ๋˜์–ด ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

answer[i] = arr.get(i).subString(1, arr.get(i).length() ๋ฅผ ํ†ตํ•ด ๋งจ ์•ž๊ธ€์ž (n ๋ฒˆ์งธ index)๋ฅผ ์ง€์šด๋‹ค.


0๊ฐœ์˜ ๋Œ“๊ธ€