백준 수 이어 쓰기 3

KIMYEONGJUN·2024년 10월 21일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다.
첫째 줄에 N이 가장 먼저 등장하는 위치를 출력한다.
앞에서부터 몇 번째인지를 출력하면 된다.

내가 이 문제를 보고 생각해본 부분

첫째 줄에 N을 입력받는다.
StringBuilder를 사용하여 1부터 N까지의 숫자를 문자열로 이어붙인다.
position 변수는 현재까지 추가된 문자열의 길이를 계산하는 데 사용된다.
sb.indexOf(String.valueOf(N))를 사용하여 N이 처음 등장하는 위치를 찾는다.
만약 N이 문자열에 존재하지 않으면 -1을 반환한다.
N이 등장하는 첫 번째 위치를 찾으면,
이를 1-based 인덱스로 변환하여 출력한다.

코드로 구현

package baekjoon.baekjoon_23;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 백준 2154번 문제
public class Main813 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();
        int position = 0;

        // 1부터 N까지의 수를 이어서 작성
        for(int i = 1; i <= N; i++) {
            String numberStr = String.valueOf(i);
            sb.append(numberStr);
            position += numberStr.length();

            // N이 처음 등장하는 위치를 찾기
            if(sb.indexOf(String.valueOf(N)) != -1) {
                // N이 등장하는 첫 번째 위치
                int firstOccurrence = sb.indexOf(String.valueOf(N)) + 1; // 1-based index
                System.out.println(firstOccurrence);
                return;
            }
        }
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글