TIL_240214

๋ผ๋ฏธยท2024๋…„ 2์›” 14์ผ

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
13/25
post-thumbnail

์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

โค๏ธ๋ฌธ์ œ

ํ•จ์ˆ˜ solution์€ ์ •์ˆ˜ n์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›์•„, n์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ํฐ๊ฒƒ๋ถ€ํ„ฐ ์ž‘์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ์ƒˆ๋กœ์šด ์ •์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด n์ด 118372๋ฉด 873211์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ํ’€์ด

// 1. ์ •์ˆ˜๋ฅผ string์œผ๋กœ ๋ณ€ํ™˜ ํ›„ string ๋ฐฐ์—ด๋กœ ์ €์žฅํ•˜๊ธฐ
public static long solution(long n){
    long answer = 0;
    String result="";
    //1. long ์„ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ ํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ์ €์žฅ
    String[] strNum = String.valueOf(n).split("");
    Arrays.sort(strNum);
    for(int i=strNum.length-1; i>=0; i--){
        result += strNum[i];
    }


    return Long.parseLong(result);
}

// 2. ์ •์ˆ˜๋ฅผ ์ชผ๊ฐœ์„œ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•˜๊ธฐ
public static long solution2(long n) {
    // ์†๋„์ธก๋ฉด์—์„œ ํ›จ์”ฌ ๋น ๋ฆ„
    // 1. while % -> ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ
    // 2. LongStream ์œผ๋กœ .char
    // 3. String -> int -> Arr -> sort
    List<Long> arr = new ArrayList<Long>();

    while (n > 0) {
        Long digit = n % 10;
        n /= 10;
        arr.add(digit);
    }
//            Collections.reverse(arr);
    Collections.sort(arr, Collections.reverseOrder());

    long answer = 0;
    for(int i =0; i<arr.size(); i++){
        answer = (answer * 10) + arr.get(i) ; // ์ธ๋ฑ์Šค ๊ฐ’ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์˜ด
    }
    return answer;
    }

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

- List์˜ ์ •๋ ฌ์ธ Collection.sort ์‚ฌ์šฉ๋ฒ•์€ Arrays.sort์™€ ๋™์ผํ•˜๋‹ค.
- ๋‘๊ฐœ์˜ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๋Œ๋ ค๋ดค์„ ๋•Œ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜์ง€๋งŒ ๋ณ€ํ™˜๊ณผ์ •์ด ์ค„์–ด๋“ค์–ด์„œ์ธ์ง€ Long list์— ๋‹ด์•„์„œ sort ํ•œ๊ฒŒ ํ›จ์”ฌ ๋น ๋ฅธ๊ฑธ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿ“๋‹ค๋ฅธ ํ’€์ด

//์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ์‹œํ‚จ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ( 1+ 2๊ฐ€ ํ•ฉ์ณ์ ธ์„œ List๊ฐ€ ์•„๋‹Œ ๋ฐฐ์—ด์— ๊ฐ’์„ ์ €์žฅํ•˜์˜€๋‹ค.)
public static long solution(long n){

    // ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ  ์ง์ ‘ ์ •๋ ฌํ•˜์—ฌ ๊ฒฐ๊ณผ ๊ณ„์‚ฐ
    String[] strNum = String.valueOf(n).split("");
    int len = strNum.length;
    int[] intArray = new int[len];

    for (int i = 0; i < len; i++) {
        intArray[i] = Integer.parseInt(strNum[i]);
    }

    Arrays.sort(intArray);

    long answer = 0;
    for (int i = len - 1; i >= 0; i--) {
        answer = answer * 10 + intArray[i];
    }

    return answer;
}
  • ์‹คํ–‰ํ•ด๋ณธ ๊ฒฐ๊ณผ ์†๋„๋Š” ๋น„์Šทํ•˜๊ฒŒ ๋‚˜์™”๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ string์„ ์ •๋ ฌํ•œ ํ›„ ์—ฐ์‚ฐํ•˜์—ฌ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค List๋‚˜ ๋ฐฐ์—ด์— ๋‹ด์€ ํ›„ sort ํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ๋น ๋ฅด๋‹ค.

ํ•˜์ƒค๋“œ ์ˆ˜

โค๏ธ๋ฌธ์ œ

์–‘์˜ ์ •์ˆ˜ x๊ฐ€ ํ•˜์ƒค๋“œ ์ˆ˜์ด๋ ค๋ฉด x์˜ ์ž๋ฆฟ์ˆ˜์˜ ํ•ฉ์œผ๋กœ x๊ฐ€ ๋‚˜๋ˆ„์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 18์˜ ์ž๋ฆฟ์ˆ˜ ํ•ฉ์€ 1+8=9์ด๊ณ , 18์€ 9๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฏ€๋กœ 18์€ ํ•˜์ƒค๋“œ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž์—ฐ์ˆ˜ x๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ x๊ฐ€ ํ•˜์ƒค๋“œ ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์™„์„ฑ

๐Ÿ“ํ’€์ด

public static boolean solution(int x) {
    int originNum = x;
    int sum = 0;
    while ( x > 0 ) {
        sum += x % 10; // sum์— ๋‚˜๋จธ์ง€ ์ €์žฅ x๊ฐ€ 998 ์ด๋ผ๋ฉด 8 ์ €์žฅ
        x = x / 10; // x / 10 ํ•จ x๊ฐ€ 998 ์ด์—ˆ๋‹ค๋ฉด x = 99
    }
    return originNum % sum == 0 ? true : false;
    }
  • ์ •์ˆ˜ x๊ฐ€ 0๋ณด๋‹ค ํฐ ๋™์•ˆ while๋ฌธ์ด ๋ฐ˜๋ณต ๋˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.
  • sum ์— x % 10 ์„ ํ•˜์—ฌ 1์˜ ์ž๋ฆฌ์˜ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์ €์žฅํ•œ ํ›„ x / 10 ์„ x ์— ์ €์žฅํ•ด ์ฃผ์–ด x ์˜ ๊ฐ’์„ ๊ณ„์† ์ค„์—ฌ์คฌ๋‹ค.
  • sum์—๋Š” ๊ณ„์†ํ•˜์—ฌ x์˜ 1์˜ ์ž๋ฆฌ ์ˆ˜(๊ฐ ์ž๋ฆฌ ์ˆ˜์˜ ํ•ฉ)์ด ์ค‘์ฒฉ ๋œ ํ›„ x ๊ฐ€ 0 ๋ณด๋‹ค ์ž‘์•„์ง€๋ฉด ์ข…๋ฃŒ๋œ๋‹ค.
  • ํ•˜์ƒค๋“œ ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด x์˜ ์›๋ณธ ๊ฐ’๊ณผ sum์˜ ๊ฐ’์„ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค๋ฉด true ์•„๋‹ˆ๋ฉด false ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

//GPT๊ฐ€ ์•Œ๋ ค์คฌ๋Š”๋ฐ return ๋ถ€๋ถ„์—์„œ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ๋ฐ”๋กœ ์กฐ๊ฑด์‹์„ ์‚ฌ์šฉํ•ด ์ค˜๋„ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.
//์ƒ๊ฐํ•ด๋ณด๋‹ˆ true ์ผ๋•Œ true๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๊ฑฐ๋ฉด ๊ทธ๋ƒฅ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ๋ฆฌํ„ดํ•ด์ค˜๋„ ์ƒ๊ด€์ด ์—†๊ตฌ๋‚˜!!
return originNum % sum == 0;

๋‘ ์ •์ˆ˜ ์‚ฌ์ด์˜ ํ•ฉ

โค๏ธ๋ฌธ์ œ

๋‘ ์ •์ˆ˜ a, b๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ a์™€ b ์‚ฌ์ด์— ์†ํ•œ ๋ชจ๋“  ์ •์ˆ˜์˜ ํ•ฉ์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”.
์˜ˆ๋ฅผ ๋“ค์–ด a = 3, b = 5์ธ ๊ฒฝ์šฐ, 3 + 4 + 5 = 12์ด๋ฏ€๋กœ 12๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ํ’€์ด

//1. if ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ
public long solution(int a, int b) {
    long answer = 0;
    
    // a, b ์‚ฌ์ด์— ์†ํ•œ ๋ชจ๋“  ์ •์ˆ˜์˜ ํ•ฉ
    if(a>b){
        for(long i = b; i<= a; i++){
        answer += i;
        }
    }
    else {
        for(long i = a; i<= b; i++){
            answer += i;
        }
    }    
    return answer;
}

//2. ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ
public long solution(int a, int b) {
    long answer = 0;
    
    for(int i =0; i<= (a < b ? b-a : a-b); i++){
        answer += a < b ? a+i : a-i;
    }

    
    return answer;
}
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๊ฒŒ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์ฝ”๋“œ์ด๊ธด ํ–ˆ์ง€๋งŒ ์ฑ„์ ํ•ด๋ณธ ๊ฒฐ๊ณผ ๋ฏธ์„ธํ•˜๊ฒŒ if๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์„๋•Œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋” ๋น ๋ฅธ ์†๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋‹ค.
  • ๊ถ๊ธˆํ•ด์„œ GPT ์—๊ฒŒ ๋ฌผ์–ด๋ณด๋‹ˆ ์‹ค์ œ๋กœ ์ฝ”ํ…Œ์—์„œ๋Š” ์†๋„๋ณด๋‹ค ๋ช…ํ™•์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค๋‹ˆ๊นŒ ์ฐธ๊ณ ํ•ด์•ผ์ง€...!

๐Ÿ“๋‹ค๋ฅธ ํ’€์ด


    public long solution(int a, int b) {
        return sumAtoB(Math.min(a, b), Math.max(b, a));
    }

    private long sumAtoB(long a, long b) {
        //a : ์ตœ์†Œ๊ฐ’, b: ์ตœ๋Œ€๊ฐ’
        return (b - a + 1) * (a + b) / 2;
    }

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

- ๋“ฑ์ฐจ์ˆ˜์—ด ๊ณต์‹์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต๋ฌธ ์—†์ด ๋ฌธ์ œ๋ฅผ ํ‘ธ์…จ๋‹ค...๋“ฑ์ฐจ์ˆ˜์—ด์ด๋ผ๋‹ˆ...๋“ฑ์ฐจ์ˆ˜์—ด์ด๋ผ๋‹ˆ...!!
๋“ฑ์ฐจ์ˆ˜์—ด ๊ณต์‹ : ๋“ฑ์ฐจ์ˆ˜์—ด ์ฒซ์งธํ•ญ๋ถ€ํ„ฐ ์ œ nํ•ญ๊นŒ์ง€์˜ ํ•ฉ sum(๋‚ด ํŽธ์˜์ƒ)
- ์ฒซ์งธํ•ญ a, nํ•ญ์ด l ์ผ๋•Œ a~nํ•ญ๊นŒ์ง€์˜ ํ•ฉ sum = n(a+l)/2
- ์ฒซ์งธํ•ญ a, ๊ณต์ฐจ(ํ•ญ๊ฐ„์˜ ์ฐจ์ด)๊ฐ€ d์ผ ๋•Œ s, sum = n(2a+(n-1)d)/2
- ๋“ฑ์ฐจ์ˆ˜์—ด ํ•ฉ ๊ณต์‹: n*(n+1)/2 | r= ์ฐจ์ˆ˜ n=count

- Math.min()/ Math.max() ๋ฉ”์„œ๋“œ

Math.min() / Math.max()

  • ์ •์ˆ˜ ๋ฐ ์‹ค์ˆ˜๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ตœ์†Ÿ๊ฐ’ ๋˜๋Š” ์ตœ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    Math.min(int a, int b) : a, b ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ตœ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค.
    Math.max(int a, int b) : a, b ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ตœ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค.
int minInt = Math.min(10, 20); // minInt๋Š” 10
double minDouble = Math.min(3.14, 2.71); // minDouble์€ 2.71

int maxInt = Math.max(10, 20); // maxInt๋Š” 20
double maxDouble = Math.max(3.14, 2.71); // maxDouble์€ 3.14

์ฝœ๋ผ์ธ  ์ถ”์ธก

โค๏ธ๋ฌธ์ œ

์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 1์ด ๋ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
์ž…๋ ฅ๋œ ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด 2๋กœ ๋‚˜๋ˆˆ๋‹ค
์ž…๋ ฅ๋œ ์ˆ˜๊ฐ€ ํ™€์ˆ˜๋ผ๋ฉด 3์„ ๊ณฑํ•˜๊ณ  1์„ ๋”ํ•œ๋‹ค
๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ ์ˆ˜์— ๊ฐ™์€ ์ž‘์—…์„ 1์ด ๋ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 1 -> 0 / ๋ฐ˜๋ณต 500 ์ด์ƒํ•œ๋‹ค๋ฉด -1 return

๐Ÿ“ํ’€์ด

public int solution(int num) {
    int answer = 0;
    long colNum = num;
    
    // num ์ด 1 ์ด๋ฉด 0 return ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1์ด ์•„๋‹Œ๋™์•ˆ ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰
    while(colNum != 1){
        // if๋ฌธ ์‚ผํ•ญ์—ฐ์‚ฐ์‹์œผ๋กœ ํ‘œํ˜„์‹œ
        // num = (num % 2 == 0 )? num / 2 : num * 3 + 1; 
        if (colNum % 2 == 0) { // ์ง์ˆ˜์ผ ๋•Œ ๊ณ„์‚ฐ
            colNum /= 2;
        } else { // ํ™€์ˆ˜์ผ ๋•Œ ๊ณ„์‚ฐ
            colNum = colNum * 3 + 1;
        }
        answer++; // ํšŸ์ˆ˜ ์ถ”๊ฐ€
        
        //500๋ฒˆ ์‹œ๋„ํ•˜๋ฉด -1 return
        if(answer == 500){
            return -1;
        }
    }
    
    return answer;
}

๐Ÿ“๋‹ค๋ฅธ ํ’€์ด

public int collatz(int num) {
    long n = (long)num;
    for(int i=0; i<500; i++){
        if(n==1) return i; 
      n = (n%2==0) ? n/2 : n*3+1;
    }

        return -1;
    }

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด์—์„œ ์ด๋ฏธ ๋ฐ˜๋ณต์˜ ์ตœ๋Œ€ ํšŸ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ๊ธฐ์— for๋ฌธ์„ 
์‚ฌ์šฉํ•ด์„œ ๋ฐ˜๋ณต์„ ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ์„ ํƒ์ง€๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆซ์ž ๋ฐฐ์—ด

โค๏ธ๋ฌธ์ œ

array์˜ ๊ฐ element ์ค‘ divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” element๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋‹ค๋ฉด ๋ฐฐ์—ด์— -1์„ ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”.

๐Ÿ“ํ’€์ด

// 1. array์˜ length๋ฅผ ๊ตฌํ•˜์—ฌ ์ •๋ ฌํ•˜๊ธฐ
class Solution {
    public int[] solution(int[] arr, int divisor) {
        int answer[];
        int arrLength = 0;
        
        //arr์„ divisor ์„ ๋‚˜๋ˆ„์–ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ        
        for(int i : arr){
            if(i%divisor == 0){
                arrLength++;                
            }
        }

        if(arrLength == 0){
            answer = new int[]{-1};
        }else{
            answer = new int[arrLength];
            int index = 0;
            for(int i : arr){
                if(i % divisor == 0){
                    answer[index++] = i;
                }
            }
            //์ •๋ ฌ
            Arrays.sort(answer);
        }

        return answer;
    }
}


// 2.List์— ๋ฐฐ์—ด์„ ๋‹ด์•„์„œ ์ •๋ ฌํ•ด์ฃผ๊ธฐ
class Solution {
    public int[] solution(int[] arr, int divisor) {
        List<Integer> result = new ArrayList<>();

        //arr length ๋งŒํผ ๋ฐ˜๋ณต
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % divisor == 0) {
                result.add(arr[i]);
            }
        }
        /* ํ–ฅ์ƒ๋œ for ๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝ
        for (int num : arr) {
            if (num % divisor == 0) {
                result.add(num);
            }
        }
        */
        if (result.isEmpty()) { // list๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด
            int[] answer = {-1};
           return answer;
        } else { // ๋ฐฐ์—ด์— ๋ฆฌ์ŠคํŠธ ๋„ฃ์–ด์ฃผ๊ธฐ
            int[] answer = new int[result.size()];
            for(int i=0; i<result.size(); i++){
                answer[i] = result.get(i);
            }
            Arrays.sort(answer);
            return answer;
        }
    }
}

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์—์„œ๋Š” ์—ญ์‹œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ํšจ์šธ์ ์ธ ๋ฐฉ๋ฒ• ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
ํ•˜์ง€๋งŒ ๋‹ค์‹œ Array๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ์—ผ๋‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ๊ฐ€๋ฆฌ๊ธฐ

โค๏ธ๋ฌธ์ œ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ชจ๋ฐ”์ผ์€ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ๊ณ ์ง€์„œ๋ฅผ ๋ณด๋‚ผ ๋•Œ ๊ณ ๊ฐ๋“ค์˜ ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ผ๋ถ€๋ฅผ ๊ฐ€๋ฆฝ๋‹ˆ๋‹ค.
์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋ฌธ์ž์—ด phone_number๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ „ํ™”๋ฒˆํ˜ธ์˜ ๋’ท 4์ž๋ฆฌ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ˆซ์ž๋ฅผ ์ „๋ถ€ *์œผ๋กœ ๊ฐ€๋ฆฐ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿ“ํ’€์ด

class Solution {
    public String solution(String phone_number) {
        int strLength =  phone_number.substring(0,phone_number.length()-4).length();
        String star = "*".repeat(strLength);
        String backNumber = phone_number.substring(phone_number.length()-4);

        return star+backNumber;
    }
}

๐Ÿ“๋‹ค๋ฅธ ํ’€์ด

class Solution {
  public String solution(String phone_number) {
     char[] ch = phone_number.toCharArray();
     for(int i = 0; i < ch.length - 4; i ++){
         ch[i] = '*';
     }
     return String.valueOf(ch);
  }
}

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

- ๋‚˜๋Š” substring๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์—ˆ์ง€๋งŒ ํ’€๊ณ  ๋‚˜์„œ ๋‹ค๋ฅธ ๋ถ„์ด ํ‘ผ ๊ฒƒ์„ ๋ดฃ๋Š”๋ฐ charArray๋กœ ๋ณ€๊ฒฝํ•œ๋’ค ๋’ค์— 4์ž๋ฆฌ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๋ฅผ '*'๋กœ ๋ณ€๊ฒฝํ•ด ์ฃผ๊ณ  ๋‹ค์‹œ String์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ํ’€์ด์—ˆ๋‹ค.
ํ›จ์”ฌ ๊น”๋”ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ดค์„๋•Œ ์†๋„๋ฉด์—์„œ ๋” ๋น ๋ฅธ ๊ฒƒ ๊ฐ™๋‹ค. api ์‚ฌ์šฉ๋ณด๋‹ค for๋ฌธ๊ณผ, ํ˜•๋ณ€ํ™˜, ์‚ฌ์šฉ์„ ์ข€ ๋” ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ

โค๏ธ๋ฌธ์ œ

์ •์ˆ˜๋ฅผ ์ €์žฅํ•œ ๋ฐฐ์—ด, arr ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ๋ฆฌํ„ดํ•˜๋ ค๋Š” ๋ฐฐ์—ด์ด ๋นˆ ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ์—” ๋ฐฐ์—ด์— -1์„ ์ฑ„์›Œ ๋ฆฌํ„ดํ•˜์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด arr์ด [4,3,2,1]์ธ ๊ฒฝ์šฐ๋Š” [4,3,2]๋ฅผ ๋ฆฌํ„ด ํ•˜๊ณ , [10]๋ฉด [-1]์„ ๋ฆฌํ„ด ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ํ’€์ด

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
        //๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ ๋ฐฐ์—ด์„ ๋ฆฌํ„ด, ๋นˆ ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ -1 ์ฑ„์›Œ์„œ ๋ฆฌํ„ด
        if (arr.length == 1) {
            return new int[]{-1};
        }
        
        //์›๋ณธ ๋ฐฐ์—ด์˜ -1 ๋งŒํผ ๋ฐฐ์—ด ์นดํ”ผ
        int[] answer = Arrays.copyOf(arr, arr.length - 1);
        
        
        int minIdx = 0;
        for(int i =0; i < arr.length; i++){
            if(arr[i] < arr[minIdx]){
                //minIdx์— i๋ฅผ ์ €์žฅ
                minIdx = i;
            }
        }
        
        for(int i = minIdx; i < answer.length; i++){
            answer[i] = arr[i +1];
        }
        return answer;
    }
}

๐Ÿ‘์ฝ”๋“œ ์„ค๋ช…

๋ฐฐ์—ด์— ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.
1. ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 1์ผ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ์›์†Œ -1 return ํ•ด์ฃผ๊ธฐ
2. ์›๋ณธ ๋ฐฐ์—ด ๊ธธ์ด์˜ -1 ๋งŒํผ ๋ณต์‚ฌํ•˜๊ธฐ
3. ์›๋ณธ ๋ฐฐ์—ด์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์›์†Œ์˜ ์ธ๋ฑ์Šค ๊ตฌํ•˜๊ธฐ
4. ๋ณต์‚ฌํ•œ ๋ฐฐ์—ด์— ์ตœ์†Œ๊ฐ’ ์ธ๋ฑ์Šค ์ž๋ฆฌ๋ถ€ํ„ฐ ์ธ๋ฑ์Šค+1 ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๊ธฐ
-> ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ–ˆ๋‹ค. ํ ...LinkedList ๋ฅผ ์“ฐ๋Š”๊ฑด ์–ด๋–จ๊นŒ ์ƒ๊ฐ๋„ ๋“ ๋‹ค

๐Ÿ“GPT๊ฐ€ ๋ณด์™„ํ•ด ์ค€ ์ฝ”๋“œ

class Solution {
    public int[] solution(int[] arr) {
        // ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 1์ผ ๊ฒฝ์šฐ -1์„ ๊ฐ€์ง„ ๋ฐฐ์—ด ๋ฐ˜ํ™˜
        if (arr.length == 1) {
            return new int[]{-1};
        }

        // ์ตœ์†Ÿ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๊ธฐ
        int minIdx = 0;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < arr[minIdx]) {
                minIdx = i;
            }
        }

        // ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์ƒ์„ฑ
        int[] answer = new int[arr.length - 1];

        // ์ตœ์†Ÿ๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ์š”์†Œ ์ด๋™
        for (int i = 0, j = 0; i < arr.length; i++) {
            if (i != minIdx) {
                answer[j++] = arr[i];
            }
        }

        return answer;
    }
}

๐Ÿ‘์ƒˆ๋กœ์šด ์ 

์ง€ํ”ผํ‹ฐ๊ฐ€ ์ฝ”๋“œ ๋ณด์™„์„ ํ•ด์คฌ๋‹ค.
-๋ฐฐ์—ด ๋ณต์‚ฌ ๊ณผ์ •์„ ์‚ญ์ œํ•œ ํ›„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ์ง์ ‘ ์š”์†Œ ์ด๋™์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์คฌ๋‹ค.
for ๋ฌธ ์„ ์–ธ๋ถ€ ์ดˆ๊ธฐํ™” ๋ถ€์— ๋‘๊ฐœ๋ฅผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฒŒ ๋„ˆ๋ฌด ์‹ ๊ธฐํ–ˆ๋‹ค.

๊ฐ€์šด๋ฐ ๊ธ€์ž ๊ฐ€์ ธ์˜ค๊ธฐ

โค๏ธ๋ฌธ์ œ

๋‹จ์–ด s์˜ ๊ฐ€์šด๋ฐ ๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”. ๋‹จ์–ด์˜ ๊ธธ์ด๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด ๊ฐ€์šด๋ฐ ๋‘๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค

๐Ÿ“ํ’€์ด

public static String solution(String s) {

    String answer = "";
    String[] strArr = s.split("");
    //๋‹จ์–ด์˜ ๊ธธ์ด๊ฐ€ ์ง์ˆ˜๋ฉด ๊ฐ€์šด๋ฐ ๋‘๊ธ€์ž ๋ฐ˜ํ™˜
    // s ๊ธธ์ด 1 ์ด์ƒ 100 ์ดํ•˜
    int len = s.length();
    if( !(len % 2 == 0)){//ํ™€์ˆ˜์ผ๋•Œ
//            char ch = s.charAt(len/2);
        answer = strArr[len/2];
    }else{ //์ง์ˆ˜๋Š” ๊ฐ€์šด๋ฐ ๋‘๊ฐœ 0123 2,1
        answer = strArr[len/2-1] + strArr[len/2] ;

    }
  • ํ ...์ •๋ง ์ง€์ €๋ถ„ํ•˜๊ฒŒ ํ’€์—ˆ๋‹ค

๐Ÿ“๋‹ค๋ฅธ ํ’€์ด

String getMiddle(String word){

return word.substring((word.length()-1)/2, word.length()/2 + 1);
}

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

๋‹ค๋ฅธ ๋ถ„์˜ ํ’€์ด๋ฅผ ๋ณด๋Š” ์ค‘ ๋„ˆ๋ฌด ๊น”๋”ํ•ด์„œ ํ•œ๋ฒˆ ์ ์–ด๋ณธ๋‹ค.
substring์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘์ธ๋ฑ์Šค์™€ (length.-1 /2) ๋์ธ๋ฑ์Šค(word.length()/2 + 1) ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์คฌ๋‹ค.
ํ ....๋„ˆ๋ฌด ์ฐฝํ”ผํ•ด์ง€๋Š” ์ง€์ €๋ถ„ํ•œ ๋‚˜์˜ ํ’€์ด...

์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง์…ˆ

โค๏ธ๋ฌธ์ œ

๋‘ ์ •์ˆ˜ left์™€ right๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. left๋ถ€ํ„ฐ right๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋“ค ์ค‘์—์„œ, ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ ์ˆ˜๋Š” ๋”ํ•˜๊ณ , ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ธ ์ˆ˜๋Š” ๋บ€ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿ“ํ’€์ด

public int solution(int left, int right) {
    int answer = 0;
    //13,14,15,16,17 ๊นŒ์ง€ 
    for(int i = left; i<= right; i++){//left~right ๊นŒ์ง€์˜ ์ˆ˜๋“ค
        //์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ return ๋ฐ›์•„์•ผ ํ•œ๋‹ค.
        //i = left i ๋ณ„๋กœ count ํ•„์š”
        int count=0;
        for(int j=1; j<=i; j++){
            if(i % j ==0){
                count++;
            }
        }
        System.out.println(i+" : ์•ฝ์ˆ˜๊ฐœ์ˆ˜ : "+count);
        
        if(count % 2 == 0){ //์•ฝ์ˆ˜๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜
            answer += i;
        }else{
            answer -= i;
        }
        
    }
    return answer;
}

๐Ÿ“๋‹ค๋ฅธ ํ’€์ด

class Solution {
    public int solution(int left, int right) {
        int answer = 0;

        for (int i=left;i<=right;i++) {
            //์ œ๊ณฑ์ˆ˜์ธ ๊ฒฝ์šฐ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜
            if (i % Math.sqrt(i) == 0) {
                answer -= i;
            }
            //์ œ๊ณฑ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜
            else {
                answer += i;
            }
        }

        return answer;
    }
}

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

์ œ๊ณฑ์ˆ˜์˜ ๊ฒฝ์šฐ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜๋ผ๋Š” ์‚ฌ์‹ค๋กœ ์ฝ”๋“œ๊ฐ€ ์•„์ฃผ ๊ฐ„๊ฒฐํ•ด์กŒ๋‹ค!!

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

โค๏ธ๋ฌธ์ œ

๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ๋ณด์„ธ์š”. ๋ฐฐ์—ด์˜ ๋งจ ์•ž์— ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ๊ทธ๋‹ค์Œ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋„ฃ์–ด ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ์ˆ˜ 3, 12์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” 3, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 12์ด๋ฏ€๋กœ solution(3, 12)๋Š” [3, 12]๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ํ’€์ด

public int[] solution(int a, int b) {

    int answer[] = new int[2];

    //์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๋‘์ˆ˜์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜
    //์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = ๋‘์ž์—ฐ์ˆ˜์˜ ๊ณฑ / ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
    int max = Math.max(a, b);
    int min = Math.min(a, b);

    while (min != 0) {
        //ํ˜ธ์ œ๋ฒ• ์‚ฌ์šฉ ํ•˜์—ฌ max % mix ์„ ํ•ด์คŒ
        int temp = min;
        min = max % min;
        max = temp;
    }
    //์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜
    answer[0]=max;

    //์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜
    answer[1] = a*b/ max;
    return answer;
}

๐Ÿ“๋‹ค๋ฅธ ํ’€์ด

public int[] gcdlcm(int a, int b) {
    int[] answer = new int[2];

    answer[0] = gcd(a,b);
    answer[1] = (a*b)/answer[0];
    return answer;  
}

public static int gcd(int p, int q){
    if (q == 0) return p;   
    return gcd(q, p%q); 
}

๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” `์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•` ์ด๋ž€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ์•˜๋‹ค.

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ & ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ

1. ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

  • 2๊ฐœ ์ˆ˜์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•(์•Œ๊ณ ๋ฆฌ์ฆ˜).
  • ์ž์—ฐ์ˆ˜ a,b์— ๋Œ€ํ•˜์—ฌ a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ r ์ด๋ผ๊ณ  ํ• ๋•Œ, a,b์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋Š” b,r์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜์™€ ๊ฐ™๋‹ค.
  • ๋”ฐ๋ผ์„œ r์„ ๊ตฌํ•˜๊ณ  b๋ฅผ r๋กœ ๋‚˜๋ˆˆ ํ›„ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค.
  • ๋‚˜๋จธ์ง€๊ฐ€ 0์ผ๋•Œ ๋‚˜๋ˆ„์—ˆ๋˜ b๊ฐ€ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜.

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ : ๋‘ ์ˆ˜ ์ด์ƒ์˜ ์—ฌ๋Ÿฌ ์ˆ˜์˜ ๊ณต์•ฝ์ˆ˜ ์ค‘ ์ตœ๋Œ€์ธ ์ˆ˜
- GCD ๋ผ๊ณ  ํ•œ๋‹ค. (Greatest Common Divisor)
- ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ, ์žฌ๊ท€ ํ•จ์ˆ˜ ์‚ฌ์šฉ 2๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค!

//for๋ฌธ ์‚ฌ์šฉ
public static int gcdFor(int a, int b) {
    int answer = 0; // ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜

    //๋‘ ์ˆ˜ ์ค‘ ํฐ ๊ฐ’๊ณผ ์ž‘์€๊ฐ’์„ ๊ตฌํ•˜๊ธฐ
    int max = Math.max(a, b);
    int min = Math.min(a, b);

    // ๋‘ ์ˆ˜๋ฅผ ๊ฐ๊ฐ i๋กœ ๋‚˜๋ˆ ์„œ ๋‘์ˆ˜์˜ ๋‚˜๋จธ์ง€๊ฐ€ 0์ผ๋•Œ -> ๋‘์ˆ˜์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜
    for (int i = 1; i <= min; i++) {
        if (a % i == 0 && b % i == 0) {
            answer = i;
        }
    }
    return answer;
}
//์žฌ๊ท€ํ•จ์ˆ˜ ์‚ฌ์šฉ
public static int gcdRec(int a, int b) {
    // ๋‚˜๋จธ์ง€๊ฐ€ 0์ผ ๊ฒฝ์šฐ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋Š” b์ด๋‹ค.
    if (a % b == 0) {
        return b;
    }
    // ์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ†ตํ•˜์—ฌ ํ•ด๊ฒฐ.
    return gcdRec(b, a % b);
}

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ณต์‹

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = ๋‘ ์ž์—ฐ์ˆ˜(a,b)์˜ ๊ณฑ ๋‚˜๋ˆ„๊ธฐ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜

private static int min(int a, int b, int max) {
    return (a * b) / max; // max : ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜
}

์‹œ์ € ์•”ํ˜ธ

โค๏ธ๋ฌธ์ œ

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

๐Ÿ“ํ’€์ด

public static String solution(String s, int n) {
    String answer = "";
    char[] chArr = s.toCharArray();
    // AB 1๋งŒํผ ๋ฐ€๋ฉด BC
    // Z 1 ๋ฐ€๋ฉด A
    // ๋Œ€๋ฌธ์ž,์†Œ๋ฌธ์ž, ๊ณต๋ฐฑ
    for(char ch : chArr){
        if('a'<=ch && ch<='z'){ //ch๊ฐ€ ์†Œ๋ฌธ์ž์ผ๋•Œ
            answer += (char)(ch + n) > 'z' ? (char)(ch - 26 + n) : (char)(ch + n);
            // ch + n > z ? ch - z + n : ch + n
        }
        else('A'<=ch && ch<='Z') { //ch๊ฐ€ ๋Œ€๋ฌธ์ž์ผ๋•Œ
            answer += (char)(ch + n) > 'Z' ? (char)(ch - 26 + n) : (char)(ch + n);
        }else { // ๊ณต๋ฐฑ์ผ๋•Œ๋Š” ๊ณต๋ฐฑ ์œ ์ง€
            answer += " ";
        }
    }
    return answer;
}

๐Ÿ“๋‹ค๋ฅธ ํ’€์ด

String caesar(String s, int n) {
    String result = "";
    n = n % 26;
for (int i = 0; i < s.length(); i++) {
    char ch = s.charAt(i);
    if (Character.isLowerCase(ch)) {
    ch = (char) ((ch - 'a' + n) % 26 + 'a');
    } else if (Character.isUpperCase(ch)) {
    ch = (char) ((ch - 'A' + n) % 26 + 'A');
    }
    result += ch;
}
    return result;
}
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์— ๋‹ค๋ฅธ๋ถ„์ด ํ‘ผ ์ฝ”๋“œ ๊ฐ€์ ธ์™€ ๋ดค๋‹ค.
  1. n = n % 26 ์„ ํ†ตํ•˜์—ฌ n์ด26 ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋„ ์•ŒํŒŒ๋ฒณ์˜ ๋ฒ”์œ„๋‚ด์—์„œ ๋™์ž‘ํ•˜๊ฒŒ ๋ณด์žฅ ๋๋‹ค. (26 : ์•„์Šคํ‚ค ์ฝ”๋“œ ์•ŒํŒŒ๋ฒณ ์ฃผ๊ธฐ)
  2. ๋ฌธ์ž์˜ ๋Œ€์†Œ๋ฌธ์ž ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.
  3. (char) ((ch - 'a' + n) % 26 + 'a')
    1. ch - 'a': ch๊ฐ€ 'a'๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ช‡๋ฒˆ์งธ์— ์žˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค
    2. +n : ์ด๋™ํ•˜๊ณ ์ž ํ•˜๋Š” ์œ„์น˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋”ํ•ด์ค€๋‹ค
    3. % 26 : ์—ญ์‹œ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.
    4. +'a' ๋‹ค์‹œ 'a'๋ฅผ ๋”ํ•ด์ค˜์„œ 'a'๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด๋™ํ•œ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋Š” ์ƒˆ๋กœ์šด ์†Œ๋ฌธ์ž๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
      ๐Ÿ‘์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 
- Character.isLowerCase() & Character.isLowerCase() : char ํƒ€์ž… ๋ฌธ์ž์˜ ๋Œ€์†Œ๋ฌธ์ž ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์—ฌ true or flase๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ค€๋‹ค.
- ์•ŒํŒŒ๋ฒณ ์ฃผ๊ธฐ๋ฅผ + ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•˜๋‹ค. 

ํ ...์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค ์•„์ง ์ปดํ“จํ„ฐ์  ์‚ฌ๊ณ ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

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