[프로그래머스_ Java_Lv0] 홀짝 구분하기, 대문자와 소문자

박경희·2024년 1월 30일

코딩테스트

목록 보기
30/69

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        if(n % 2 == 0) {
            System.out.print(n + " is even");
        } else {
            System.out.print(n + " is odd");
        }
        
    }
}

삼항 연산

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        System.out.println(n + " is " +  (n % 2 == 0 ? "even" : "odd"));
    }

for 루프 + StringBuilder(가장 좋은 방법)

public static String solution(String my_string) {
StringBuilder answer = new StringBuilder();

        for (char c : my_string.toCharArray()) {
            answer.append(Character.isUpperCase(c) ? Character.toLowerCase(c) : Character.toUpperCase(c));
        }
        return answer.toString();

StringBuilder + Character

  public String solution(String my_string) {
        StringBuilder result = new StringBuilder();

       for(char c : my_string.toCharArray()) {
           if (Character.isUpperCase(c)) {
               result.append(Character.toLowerCase(c));
           } else {
               result.append(Character.toUpperCase(c));
           }
       }
        return result.toString();
    }

Stream API (chars() + mapToObj()) (코드는 간결하지만 가독성이 다소 떨어질 수 있다.)

 public String solution(String my_string) {
       return my_string.chars()
                .mapToObj(c -> Character.isUpperCase(c) ?
                        Character.toLowerCase((char) c) :
                        Character.toUpperCase((char) c))
                .map(String::valueOf)
                .collect(Collectors.joining());
    }

1️⃣ my_string.chars() → 문자열을 IntStream으로 변환

  • chars()는 문자열을 IntStream으로 변환하는 메서드.
  • IntStream은 각 문자의 유니코드(ASCII) 값을 포함 한다.

2️⃣ .mapToObj(c -> ...)int 값을 Character로 변환하면서 대소문자 변환

  • mapToObj(c -> ...)IntStreamStream<Character>로 변환.
  • Character.isUpperCase(c)를 사용하여 대문자면 소문자로, 소문자면 대문자로 변환.

3️⃣ .map(String::valueOf)→ 문자를 문자열로 변환

  • 현재 Stream<Character> 상태이므로 각 문자를 String으로 변환.

4️⃣ .collect(Collectors.joining()) → 리스트를 문자열로 합치기

0개의 댓글