백준

박경희·2024년 1월 22일

코딩테스트

목록 보기
27/69

11720

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);

        int nextInt = sc.nextInt();
        String num = sc.next();
        int sum = 0;

        for (int i = 0; i < nextInt; i++) {
            sum +=  num.charAt(i) - '0';
        }
        System.out.println(sum);
    }
}
  • sc.next() → 공백 없이 숫자를 문자열로 입력받음.
  • 반복문(for) → 문자열 길이만큼 반복하여 한 자리씩 접근.
  • charAt(i) - '0'→ 문자(char)를 정수(int)로 변환 ('5' - '0'5).
  • 누적 합(sum +=) → 각 숫자를 더해서 결과 계산.

10809

		Scanner sc = new Scanner(System.in);

        String s = sc.next();

        for (char c = 'a'; c <= 'z'; c++) {
            System.out.print(s.indexOf(c) + " ");
        }

Java의 indexOf()

  • indexOf() 메서드는 문자열에서 특정 문자의 첫 번째 등장 위치를 찾아주고, 존재하지 않으면 -1을 반환한다.
  • s.indexOf(c)
    → 문자열 s에서 문자 c가 처음 등장하는 위치 반환.

2675

		Scanner sc = new Scanner(System.in);

        int T = sc.nextInt(); // 테스트 케이스 개수 입력
        for (int i = 0; i < T; i++) {
            int R = sc.nextInt();   //반복 횟수 입력
            String S = sc.next();

            StringBuilder P = new StringBuilder(); // 결과 문자열 저장

            for (char c : S.toCharArray()) {        // 문자열 S의 각 문자열에 대해
                P.append(String.valueOf(c).repeat(R));  // R번 반복하여 추가
            }
            System.out.println(P);
        }
  1. 입력 받기
  • T: 테스트 케이스 개수를 입력받음.
  • R: 각 테스트 케이스에서 문자를 몇 번 반복할지 입력받음.
  • S: 반복할 문자열 입력.
  1. 문자 반복 처리
  • StringBuilder P를 사용하여 문자열을 효율적으로 조합.
  • S.toCharArray()를 이용해 S를 문자 배열로 변환.
  • String.valueOf(c).repeat(R) → 각 문자를 R번 반복하여 P에 추가.

1152

오답

  Scanner sc = new Scanner(System.in);

        String T = sc.nextLine().trim();

        String[] split = T.split(" ");
        System.out.println(split.length);

    }

공백만 입력된 경우 예외 처리를 하지 않았기 때문에 틀린 답이다.
-> 입력이 공백(" ")만 있을 때, split(" ")이 빈 배열을 올바르게 처리하지 못하기 때문이다.

입력이 " "(공백만 있는 경우)라면?

  • trim()을 적용하면 ""(빈 문자열)이 된다.
  • split(" ")을 호출하면 빈 문자열 배열이 아닌 [""](길이 1인 배열)을 반환.
  • 따라서 공백만 입력했는데도 1이 출력되는 문제 발생하게 된다.

=> 공백만 입력된 경우 isEmpty()를 활용해 배열 크기를 0으로 설정해야 한다.

정답

Scanner sc = new Scanner(System.in);

        String T = sc.nextLine().trim();

        if (T.isEmpty()) {
            System.out.println(0);
        } else {
            String[] split = T.split(" ");
            System.out.println(split.length);
        }
  • split("\\s+") 사용하면 연속 공백도 하나의 구분자로 처리 가능하다.

0개의 댓글