본문 바로가기
코딩기초

코딩기초_7월 중순의 기록(등차수열, 이어붙인 수, 주사위 게임, stream 활용 등)

by 우주_미아 2023. 7. 16.

**jekyll 페이지로 옮길 내용들 블로그에 백업해두기~!

 

코딩기초 연습 ::: 7월 중순의 기록

출처 - pixabay 'food'

 

1. 이어 붙인 수 

각 자리수의 덧셈

처음부터 해당 자리 수를 10을 곱해 만들어줄 수 있다.

스트링으로 바꾼 후에 굳이 할 필요없이

Int로만 처음부터 끝까지 ~ 1*0+ 3*10 + 5*100.. 이렇게 진행하면 되니까!

 

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;

        int even = 0;
        int odd = 0;

        for(int num : num_list) {
            if(num % 2 == 0) {
                even *= 10;
                even += num;
            } else {
                odd *= 10;
                odd += num;
            }
        }
        answer = even + odd;

        return answer;
    }
}

 

2. 코드처리하기 

*문제에서 조건이 없다면 굳이 힘들게 배열로 안 옮기고 차례대로 문자열을 추가하면 된다.

문자열 직접 활용하여 3줄 더 줄이기

class Solution {
    public String solution(String code) {
        int mode = 0;
        String ret = "";

        for (int idx = 0; idx < code.length(); idx++) {
            if (code.charAt(idx) == '1') {
                mode = 1 - mode;
            } else if (mode == 0 && idx % 2 == 0) {
                ret += code.charAt(idx);
            } else if (mode == 1 && idx % 2 == 1) {
                ret += code.charAt(idx);
            }
        }
        if (ret.equals("")) {
            return "EMPTY";
        } else {
            return ret;
        }
    }
}

 

3. 주사위 게임 2

int a = 2;

// 제곱
int square = (int) Math.pow(a, 2);
System.out.println(square);  // 출력: 4

// 세제곱
int cube = (int) Math.pow(a, 3);
System.out.println(cube);  // 출력: 8

 

class Solution {
    public int solution(int a, int b, int c) {
        int answer = 1;

        int count = 1;
        if(a == b || a == c || b == c) {
            count++;
        }

        if(a == b && b == c) {
            count++;
        }

        for(int i = 1; i <= count; i++) {
            answer *= (pow(a,i)+pow(b,i)+pow(c,i));
        }

        return answer;
    }

    private int pow(int a, int b) {
        if(b == 0) return 1;
        return a * pow(a, b-1);
    }
}
  • pow 클래스를 오버라이딩 : count 라는 변수를 써서 제곱할 수를 조절
  • (pow 클래스 내에서 재귀호출 ..?)
  • Tip : pow(a,b-1) pow 메서드에서 사용하는 변수를 a, b 말고 a 대신 base라는 이름을 사용하고, b 대신 exponent라는 이름을 사용해보기

 

4. 등차수열의 특정항만 더하기

stream

import java.util.stream.IntStream;

class Solution {
    public int solution(int a, int d, boolean[] included) {
        return IntStream.range(0, included.length).map(idx -> included[idx]?a+(idx*d):0).sum();
    }
}
String variable = "wasdwasd";
int n = 0;

for (char ch : variable.toCharArray()) {
    switch (ch) {
        case 'w':
            n += 1;
            break;
        case 's':
            n -= 1;
            break;
        case 'd':
            n += 10;
            break;
        case 'a':
            n -= 10;
            break;
        default:
            System.out.println("유효하지 않은 조건입니다.");
            break;
    }
}

System.out.println("변경된 n 값: " + n);
`for` 문에서 `:` 기호는 Enhanced for 문 또는 향상된 for 문이라고도 불립니다. 이 문법은 배열이나 컬렉션과 같은 반복 가능한(iterable) 객체를 순회하며 요소에 접근할 때 사용됩니다.

`variable.toCharArray()`는 `variable` 문자열을 `char` 배열로 변환하는 메소드입니다. 이 메소드는 `variable` 문자열의 각 문자를 개별적인 `char` 요소로 가지는 배열을 반환합니다.

`for (char ch : variable.toCharArray())`는 변환된 `char` 배열의 각 요소에 대해 반복하면서 `ch` 변수에 순차적으로 할당하는 것을 의미합니다. 즉, `ch` 변수는 `variable` 문자열의 각 문자를 차례대로 나타내는데 사용됩니다.

이러한 문법을 사용하면 반복문을 통해 배열이나 컬렉션의 요소에 쉽게 접근할 수 있으며, 반복 변수를 명시적으로 선언하고 할당할 필요가 없어 코드를 간결하게 작성할 수 있습니다.

 

 

class Solution {
    public int solution(int n, String control) {
        int answer = n;

        for(char ch : control.toCharArray()) {
            switch(ch) {
                case 'w': answer += 1; break;
                case 's': answer -= 1; break;
                case 'd': answer += 10; break;
                case 'a': answer -= 10; break;
                default:break;
            }
        }

        return answer;
    }
}

 

class Solution {
    public int solution(int n, String control) {
        return control.chars().reduce(n, (acc, c) -> acc + (c == 'w' ? 1 : c == 's' ? -1 : c == 'd' ? 10 : -10));
    }
}

 

 

 

5.  수열과 구간 쿼리2

malloc쓰는 거 너무 어렵다