Programmers #8

์ด๊ฐ•์šฉยท2023๋…„ 3์›” 29์ผ
1

Programmers

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

์ธ๋ฑ์Šค ๋ฐ”๊พธ๊ธฐ

๐Ÿ“‘ ๋ฌธ1) ๋ฌธ์ž์—ด my_string๊ณผ ์ •์ˆ˜ num1, num2๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, my_string์—์„œ ์ธ๋ฑ์Šค num1๊ณผ ์ธ๋ฑ์Šค num2์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.


์ž…์ถœ๋ ฅ ์˜ˆ

my_stringnum1num2result
"hello"12"hlelo"
"I love you"36"I l veoyou"

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

  • "hello"์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค์ธ "e"์™€ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค์ธ "l"์„ ๋ฐ”๊พธ๋ฉด "hlelo"์ž…๋‹ˆ๋‹ค.
  • "hello"์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค์ธ "e"์™€ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค์ธ "l"์„ ๋ฐ”๊พธ๋ฉด "hlelo"์ž…๋‹ˆ๋‹ค.

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

package ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค;

public class IndexChange {
	public static String solution(String my_string, int num1, int num2) {
        String answer = "";
        StringBuilder str = new StringBuilder(my_string);
        char temp = str.charAt(num1);
        str.setCharAt(num1, str.charAt(num2));
        str.setCharAt(num2, temp);
        answer+= str;
     
        return answer;
    }
	
	
	public static void main(String[] args) {
		solution("I love you",3,6);
	}
}

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

String ํด๋ž˜์Šค๋Š” ๋ถˆ๋ณ€ํ•˜๊ธฐ๋•Œ๋ฌธ์—, ํ•œ ๋ฒˆ ์ƒ์„ฑ๋œ ๋ฌธ์ž์—ด์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ,
๋ฌธ์ž์—ด์„ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” StringBuilder ํด๋ž˜์Šค์˜ ๋ฌธ์ž์—ด์„ ์“ฐ๋ฉด ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ •์ด ์šฉ์ดํ•˜๋‹ค.
์ž„์‹œ ๋ณ€์ˆ˜ temp์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜จ num1์„ ๋„ฃ๊ณ  str.setCharAt()์˜ index num1 ๋ฒˆ์งธ ๊ฐ’์„ str.charAt(num2) ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•œ ๋’ค, ์ž์‹ ์˜ ์œ„์น˜์—๋Š” temp๊ฐ’์„ ๋„ฃ์–ด ์ธ๋ฑ์Šค ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.


๋ฐฐ์—ด ํšŒ์ „์‹œํ‚ค๊ธฐ

๐Ÿ“‘ ๋ฌธ2) ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers์™€ ๋ฌธ์ž์—ด direction๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐฐ์—ด numbers์˜ ์›์†Œ๋ฅผ direction๋ฐฉํ–ฅ์œผ๋กœ ํ•œ ์นธ์”ฉ ํšŒ์ „์‹œํ‚จ ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ž…์ถœ๋ ฅ ์˜ˆ

numbersdirectionresult
[1, 2, 3]"right"[3, 1, 2]
[4, 455, 6, 4, -1, 45, 6]"left"[455, 6, 4, -1, 45, 6, 4]

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

  • numbers ๊ฐ€ [1, 2, 3]์ด๊ณ  direction์ด "right" ์ด๋ฏ€๋กœ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ํšŒ์ „์‹œํ‚จ [3, 1, 2]๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.
  • numbers ๊ฐ€ [4, 455, 6, 4, -1, 45, 6]์ด๊ณ  direction์ด "left" ์ด๋ฏ€๋กœ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ํšŒ์ „์‹œํ‚จ [455, 6, 4, -1, 45, 6, 4]๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

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

package ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค;

import java.util.Arrays;

public class Rotation {
	 public static int[] solution(int[] numbers, String direction) {
	        int temp = 0;
	    
	        int[] newArr = new int[numbers.length]; 
	        	if(direction.equals("right")) {
	        		temp = numbers[numbers.length-1]; //temp์— ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๋Œ€์ž…
	        		for(int i = 1; i < numbers.length; i++) {
	        			newArr[i] = numbers[i-1];
	        		}
	        		newArr[0] = temp;
	        	}else {
	        		temp = numbers[0];
	        		for(int i = 0; i<numbers.length-1; i++) {
	        			newArr[i] = numbers[i+1];
	        		}
	        		newArr[numbers.length-1] = temp;
	        		
	        	}
	        return newArr;
	    }
	 
	 public static void main(String[] args) {
		 int[] numbers = {1,2,3};
		solution(numbers,"right");
	}

}

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

temp๋ผ๋Š” ์ž„์‹œ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ํ•ด๋‹น ๊ฐ’์— numbers์˜ ๋งˆ์ง€๋ง‰ index ๊ฐ’์„ ๋Œ€์ž…
๊ทธ๋ฆฌ๊ณ  for๋ฌธ์„ ๋Œ๋ ค ์‹œํ”„ํŠธ ๋œ ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ณ , newArr[0] = temp๊ฐ’์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ, ๋ฐ˜๋Œ€๋กœ ์™ผ์ชฝ์œผ๋กœ ์‹œํ”„ํŠธ๋Š” ์ž„์‹œ ๋ณ€์ˆ˜ temp์— numbers์˜ ์ฒ˜์Œ index๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ณ ,
numbers.length-1 ํฌ๊ธฐ ๋งŒํผ ๋ฐ˜๋ณต์„ ๋Œ๋ฆฌ๋Š”๋ฐ, ์ด๋Š” ๋งˆ์ง€๋ง‰ index์—” temp๊ฐ’์„ ๋„ฃ์–ด
์‹œํ”„ํŠธ ๋œ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

ChatGPT ํ’€์ด

class Solution {
    public int[] solution(int[] numbers, String direction) {
        int length = numbers.length;
        int[] rotated = new int[length];
        
        if (direction.equals("right")) { // ์‹œ๊ณ„๋ฐฉํ–ฅ ํšŒ์ „
            for (int i = 0; i < length; i++) {
                rotated[(i+1)%length] = numbers[i];
            }
        } else { // ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ ํšŒ์ „
            for (int i = 0; i < length; i++) {
                rotated[i] = numbers[(i+1)%length];
            }
        }
        
        return rotated;
    }
}

์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ๋‚˜์™€ ๊ฐ™์ง€๋งŒ, ํ’€์ด๋ฅผ ๋ดค์„ ๋•Œ ๋’คํ†ต์ˆ˜๋ฅผ ํ•œ๋Œ€ ์–ป์–ด ๋งž๋Š” ๋“ฏํ•œ ๊ธฐ๋ถ„์ด์˜€๋‹ค...
๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ดค์„ ๋•Œ, ์ด๊ฒŒ ์–ด๋–ป๊ฒŒ ์ด๋ ‡๊ฒŒ ๋˜๋Š”๊ฑฐ์ง€... ํ–ˆ์ง€๋งŒ, ์ด๊ฑธ ์ด๋ ‡๊ฒŒ ํ’€์—ˆ์–ด????

right

1%3 == 1
2%3 == 2
3%3 == 0
rotated[1] = numbers[0];
rotated[2] = numbers[1];
rotated[0] = numbers[2];
๊ฒฐ๊ณผ๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ shiftํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด

left

rotated[0] = numbers[1];
rotated[1] = numbers[2];
rotated[2] = numbers[0];
๊ฒฐ๊ณผ๋Š” ์™ผ์ชฝ์œผ๋กœ shiftํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด


๊ฐ€์žฅ ํฐ ์ˆ˜ ์ฐพ๊ธฐ

๐Ÿ“‘ ๋ฌธ3) ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€์žฅ ํฐ ์ˆ˜์™€ ๊ทธ ์ˆ˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.


์ž…์ถœ๋ ฅ ์˜ˆ

arrayresult
[1,8,3][8,1]
[9,10,11,8][11,2]

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

  • 1, 8, 3 ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 8์ด๊ณ  ์ธ๋ฑ์Šค 1์— ์žˆ์Šต๋‹ˆ๋‹ค.
  • 9, 10, 11, 8 ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 11์ด๊ณ  ์ธ๋ฑ์Šค 2์— ์žˆ์Šต๋‹ˆ๋‹ค.

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

package ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค;

public class BigNum {
	public static int[] solution(int[] array) {
        int a = 0;
        int[] answer = new int[2];
       
        for(int i = 0; i< array.length; i++) {
        	a = array[i] > a ? array[i] : a;
        }
        	answer[0] = a;
        for(int i = 0; i<array.length; i++) {
        	if(array[i]==a) {
        		answer[1]= i;
        		break;
        	}
        }
        return answer;
    }
	
	public static void main(String[] args) {
		int[] array = {9, 10, 11, 8};
		solution(array);
	}

}

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

๋จผ์ €, ํ•ด๋‹น Array์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฒ ์ง€๋งŒ,
๊ฐ€์žฅ ์›์‹œ์ ์ธ ๋ชจ๋“  ์ˆ˜๋ฅผ ๋น„๊ตํ•ด์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์‚ผํ•ญ์—ฐ์‚ฌ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ array[i] ๊ฐ€ a ์ดˆ๊ธฐ๊ฐ’(0)๋ณด๋‹ค ํฌ๋ฉด a์— array[i]๋ฅผ ๋Œ€์ž…, ์•„๋‹ˆ๋ฉด a ์ž๊ธฐ ์ž์‹ ์„ ๋Œ€์ž…
๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ์žˆ๋Š” index ์—ญ์‹œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๋“ค์–ด๊ฐ„ ์ธ๋ฑ์Šค์™€ ๊ฐ™์„ ๋•Œ๋ฅผ ๊ฒ€์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ


chatGPT๋Š” ์–ด๋–ป๊ฒŒ ํ’€์—ˆ์„๊นŒ?

public static int[] solution(int[] array) {
    int max = array[0];
    int maxIndex = 0;
    for (int i = 1; i < array.length; i++) {
        if (array[i] > max) {
            max = array[i];
            maxIndex = i;
        }
    }
    return new int[]{max, maxIndex};
}

๋‹ค์‹œ๋ณด์•„๋„ GPT์˜ ํ’€์ด๋Š” ๋†€๋ž๋‹ค

intํ˜• ๋ณ€์ˆ˜ max์— array[0] ๊ฐ’์„ ๋„ฃ๋Š” ์ƒ๊ฐ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”๊ฑฐ์ง€...
Index ๋ณ€์ˆ˜๋ฅผ ์žก๊ณ , for๋ฌธ์„ ๋Œ๋ ค array[i] ๊ฐ€ max ๋ณด๋‹ค ํด๋•Œ ๋งŒ,
max๊ฐ’๊ณผ, maxIndex๊ฐ’์„ ์˜ฌ๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ...
return ๊ฐ’์— new int[] {max, maxIndex} ํ•˜๋ฉด... ๋ฆฌํ„ด์ด ๋˜๋Š”๊ฒƒ๋„ ์‹ ๊ธฐ..


์™ธ๊ณ„ํ–‰์„ฑ์˜ ๋‚˜์ด

๐Ÿ“‘ ๋ฌธ4) ์šฐ์ฃผ์—ฌํ–‰์„ ํ•˜๋˜ ๋จธ์“ฑ์ด๋Š” ์—”์ง„ ๊ณ ์žฅ์œผ๋กœ PROGRAMMERS-962 ํ–‰์„ฑ์— ๋ถˆ์‹œ์ฐฉํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ์ž…๊ตญ์‹ฌ์‚ฌ์—์„œ ๋‚˜์ด๋ฅผ ๋งํ•ด์•ผ ํ•˜๋Š”๋ฐ, PROGRAMMERS-962 ํ–‰์„ฑ์—์„œ๋Š” ๋‚˜์ด๋ฅผ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. a๋Š” 0, b๋Š” 1, c๋Š” 2, ..., j๋Š” 9์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 23์‚ด์€ cd, 51์‚ด์€ fb๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ด age๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ PROGRAMMER-962์‹ ๋‚˜์ด๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ž…์ถœ๋ ฅ ์˜ˆ

ageresult
23"cd"
51"fb"
100"baa"

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

  • age๊ฐ€ 23์ด๋ฏ€๋กœ "cd"๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.
  • age๊ฐ€ 51์ด๋ฏ€๋กœ "fb"๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.
  • age๊ฐ€ 100์ด๋ฏ€๋กœ "baa"๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

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

package ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค;

public class AlienPlanet {
	public static String solution(int age) {
        String answer = "";
        String numStr = Integer.toString(age);
        String[] str = new String[numStr.length()];

        // ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐฐ์—ด์— ๋„ฃ๊ธฐ
        for (int i = 0; i < str.length; i++) {
            str[i] = Character.toString(numStr.charAt(i));
            if(str[i].equals("0")) {
            	str[i] = "a";
            }else if(str[i].equals("1")) {
            	str[i] = "b";
            }else if(str[i].equals("2")) {
            	str[i] = "c";
            }else if(str[i].equals("3")) {
            	str[i] = "d";
            }else if(str[i].equals("4")) {
            	str[i] = "e";
            }else if(str[i].equals("5")) {
            	str[i] = "f";
            }else if(str[i].equals("6")) {
            	str[i] = "g";
            }else if(str[i].equals("7")) {
            	str[i] = "h";
            }else if(str[i].equals("8")) {
            	str[i] = "i";
            }else {
            	str[i] = "j";
            }
            answer+= str[i];
        }
        return answer;
    }
	
	public static void main(String[] args) {
		solution(23);
	}

}

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

์ˆซ์ž๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์„œ, str๋ฐฐ์—ด์— ๋„ฃ๋Š”๊ฑฐ ๊นŒ์ง„ ๊ดœ์ฐฎ์•˜๋˜ ์ƒ๊ฐ๊ฐ™์€๋ฐ,
for๋ฌธ ์† if๋ฌธ์„ ์ˆซ์ž 0~9๊นŒ์ง€ ๋ฐ˜๋ณต ํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์—์„œ, ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ์˜€๋˜๊ฑฐ ๊ฐ™๋‹ค. ์ •๋‹ต์€ ๋งž์ท„๊ธด ํ•˜์ง€๋งŒ, ์ •๋‹ต์„ ๋งž์ถ”์‹  ๋ถ„๋“ค ์ค‘์— ํ›จ์”ฌ ๊น”๋”ํ•œ ์ฝ”๋“œ์™€ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์•˜๋‹ค.


๊ฐœ์„ ๋œ ์ฝ”๋“œ (feat. chatGPT)

class Solution {
    public String solution(int age) {
    String answer = "";

    while (age > 0) {
        int remainder = age % 9;
        char digitChar = (char)('a' + remainder);
        answer = digitChar + answer;
        age /= 9;
    }

    return answer;
  }
}

์ดˆ๊ธฐ์— String[] alpha = new String[]{"a","b","c","d","e","f","g","h","i","j"}; ์™€ ๊ฐ™์ด ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ์„ ์–ธํ•˜์ง€์•Š๊ณ , 10์ง„์ˆ˜๋ฅผ 9์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ™”๋Š” ๊ณผ์ • ( age % 9 )๊ณผ ์•„์Šคํ‚ค ์ฝ”๋“œ ํ‘œ (char)('a' + remainder) = ์•„์Šคํ‚ค ์ฝ”๋“œ ํ‘œ ์ƒ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์›๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ, anwer = digitChar + answer; ์—ญ์‹œ ์ดˆ๊ธฐ์— ์ €์žฅ๋œ answer๊ฐ’์„ digitChar ๋’ค๋กœ ๋ณด๋‚ด์–ด ์ตœ์ข…์ ์œผ๋กœ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. while ๋ฌธ์€ age /= 9; ์˜ ๊ฒฐ๊ณผ๊ฐ€ 0์ด๋ฉด while๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.

์˜ค๋Š˜๋„ ๋ฐฐ์›Œ๊ฐ‘๋‹ˆ๋‹ค....


ํ”ผ์ž ๋‚˜๋ˆ  ๋จน๊ธฐ (2)

๐Ÿ“‘ ๋ฌธ5) ๋จธ์“ฑ์ด๋„ค ํ”ผ์ž๊ฐ€๊ฒŒ๋Š” ํ”ผ์ž๋ฅผ ์—ฌ์„ฏ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ผ ์ค๋‹ˆ๋‹ค. ํ”ผ์ž๋ฅผ ๋‚˜๋ˆ ๋จน์„ ์‚ฌ๋žŒ์˜ ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n๋ช…์ด ์ฃผ๋ฌธํ•œ ํ”ผ์ž๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ๋ชจ๋‘ ๊ฐ™์€ ์ˆ˜์˜ ํ”ผ์ž ์กฐ๊ฐ์„ ๋จน์–ด์•ผ ํ•œ๋‹ค๋ฉด ์ตœ์†Œ ๋ช‡ ํŒ์„ ์‹œ์ผœ์•ผ ํ•˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.


์ž…์ถœ๋ ฅ ์˜ˆ

nresult
61
105
42

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

  • 6๋ช…์ด ๋ชจ๋‘ ๊ฐ™์€ ์–‘์„ ๋จน๊ธฐ ์œ„ํ•ด ํ•œ ํŒ์„ ์‹œ์ผœ์•ผ ํ”ผ์ž๊ฐ€ 6์กฐ๊ฐ์œผ๋กœ ๋ชจ๋‘ ํ•œ ์กฐ๊ฐ์”ฉ ๋จน์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • 10๋ช…์ด ๋ชจ๋‘ ๊ฐ™์€ ์–‘์„ ๋จน๊ธฐ ์œ„ํ•ด ์ตœ์†Œ 5ํŒ์„ ์‹œ์ผœ์•ผ ํ”ผ์ž๊ฐ€ 30์กฐ๊ฐ์œผ๋กœ ๋ชจ๋‘ ์„ธ ์กฐ๊ฐ์”ฉ ๋จน์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • 4๋ช…์ด ๋ชจ๋‘ ๊ฐ™์€ ์–‘์„ ๋จน๊ธฐ ์œ„ํ•ด ์ตœ์†Œ 2ํŒ์„ ์‹œํ‚ค๋ฉด ํ”ผ์ž๊ฐ€ 12์กฐ๊ฐ์œผ๋กœ ๋ชจ๋‘ ์„ธ ์กฐ๊ฐ์”ฉ ๋จน์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


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

package ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค;

public class PizzaEat {
	public static int solution(int n) {
        int answer = 0;
        int pizcnt = 1;
        
        
        while(true) {
        	if((6*pizcnt) % n == 0) {
        		answer =  (6 * pizcnt) / 6;
        		break;
        	}
        	pizcnt++;
        }
        return answer;
    }
	
	public static void main(String[] args) {
		solution(4);
	}

}

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

์ œ์ผ ๋จผ์ € ๋“ค์—ˆ๋˜ ์ƒ๊ฐ์ด, ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜์™€ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ค์—ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋ƒฅ ์ง๊ฐ์ ์œผ๋กœ ์ด๋ ‡๊ฒŒ, ์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋˜๊ฒ ๋‹ค ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ์‚ฌ๋žŒ์œผ๋กœ์จ ์™œ ์ด๋ ‡๊ฒŒ ๋˜๋Š”๊ฐ€? ๋ฅผ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฐพ์•„๋ณธ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ๋‹ค.

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM, Least Common Multiple)

  • ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ๋‘ ์ˆ˜์˜ ๊ณต๋ฐฐ์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์˜๋ฏธ

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD, Greatest Common Divisor)

  • ๋‘ ์ˆ˜์˜ ๊ณตํ†ต๋œ ์•ฝ์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์™€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ

public class PizzaShop {

    public static void main(String[] args) {
        System.out.println(solution(7)); // ์ถœ๋ ฅ: 7
    }
    public static int gcd(int a, int b) {
        while (b != 0) {
            int temp = a % b;
            a = b;
            b = temp;
        }
        return a;
    }

    public static int solution(int n) {
        int gcdValue = gcd(n, 6);
        int lcmValue = (n * 6) / gcdValue;
        int numberOfPizzas = lcmValue / 6;
        
        return numberOfPizzas;
    }
}

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•(Euclidean Algorithm)

  • ๋‘ ์ˆ˜์˜ ๋‚˜๋จธ์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•
while (b != 0) {
            int temp = a % b;
            a = b;
            b = temp;
        }
  1. while (b != 0) : b ๊ฐ€ 0์ด ์•„๋‹Œ ๋™์•ˆ ๋ฐ˜๋ณต๋ฌธ์ด ์‹คํ–‰, b ๊ฐ€ 0์ด๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒ
  2. int temp = a % b : a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ temp ๋ณ€์ˆ˜์— ์ €์žฅ
  3. a = b : b์˜ ๊ฐ’์„ a์— ํ• ๋‹น
  4. b = temp : ์ด์ „์— ๊ตฌํ•œ ๋‚˜๋จธ์ง€์ธ temp๊ฐ’์„ b์— ํ• ๋‹น

๋ฐ˜๋ณต๋ฌธ์ด ์ง„ํ–‰๋  ๋•Œ๋งˆ๋‹ค a์™€ b ์˜ ๊ฐ’์ด ๋ฐ”๋€Œ๊ณ , ๋‘ ์ˆ˜์˜ ๋‚˜๋จธ์ง€๊ฐ€ ์ ์  ์ž‘์•„์ง, ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ b๊ฐ€ 0์ด ๋˜๋ฉด, ๊ทธ ์‹œ์ ์˜ a ๊ฐ’์€ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๊ฐ€ ๋จ

ex) a = 24, b = 18 ์ผ๋•Œ,

์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต:
temp = 24 % 18 = 6
a = 18
b = 6
๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต:
temp = 18 % 6 = 0
a = 6
b = 0

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