이 영역을 누르면 첫 페이지로 이동
Arc 블로그의 첫 페이지로 이동

Arc

페이지 맨 위로 올라가기

Arc

[Baekjoon] 1138: 한 줄로 서기

  • 2023.02.26 19:36
  • Algorithm/PS
글 작성자: SeoArc

문제

각 index 번째에 있는 사람들의 왼쪽에 자기보다 큰 사람이 몇 명 있는지 주어지면, 각 사람들의 번호를 위치 순서로 출력하는 문제이다.

 

풀이

내 풀이

public class Q1138 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        List<Integer> numbers = new ArrayList<>();

        int n = Integer.parseInt(br.readLine());
        String[] leftCounts = br.readLine().split(" ");

        for (int i = n - 1; i >= 0; i--) {
            int leftCount = Integer.parseInt(leftCounts[i]);

            if (leftCount == 0) {
                numbers.add(0, i + 1);
                continue;
            }

            int count = 0;
            for (int j = 0; j < numbers.size(); j++) {
                if (numbers.get(j) > i + 1) {
                    count++;
                }

                if (count == leftCount) {
                    numbers.add(count, i + 1);
                    break;
                }
            }
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            sb.append(numbers.get(i)).append(" ");
        }
        System.out.println(sb);
    }
}

이 문제는 예제가 많아서 풀이가 좀 더 수월했던 것 같다.

일단 결과값들의 공통점을 보면, 마지막 수는 제일 크기 때문에 왼쪽에 아무도 더 큰 사람이 없다는 것이다.

이를 확인하면 이후 풀이가 쉬워진다.

 

위 내용을 활용하기 위해 여기선 먼저 오른쪽부터 탐색했다.

이렇게 하면 필연적으로 다음 값(오른쪽부터 탐색하므로 이전 index 값)의 최댓값은 현재 리스트의 Size의 값이다.

왜냐하면 이미 큰 사람들은 오른쪽부터 탐색하여 리스트에 들어갔기 때문이다.

 

회고

이보다 더 좋은 방법이 생각날 것 같은데 쉽지 않다.

추후에 다시 풀어보고 더 좋은 방법을 생각해봐야겠다.

 

'Algorithm > PS' 카테고리의 다른 글

[Baekjoon] 9935: 문자열 폭발  (2) 2023.03.02
[Baekjoon] 16934: 게임 닉네임  (0) 2023.03.02
[Baekjoon] 17298: 오큰수  (0) 2022.12.06
[Baekjoon] 3190: 뱀  (0) 2022.10.23
[Baekjoon] 11054: 가장 긴 바이토닉 부분 수열  (0) 2022.10.19

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Baekjoon] 9935: 문자열 폭발

    [Baekjoon] 9935: 문자열 폭발

    2023.03.02
  • [Baekjoon] 16934: 게임 닉네임

    [Baekjoon] 16934: 게임 닉네임

    2023.03.02
  • [Baekjoon] 17298: 오큰수

    [Baekjoon] 17298: 오큰수

    2022.12.06
  • [Baekjoon] 3190: 뱀

    [Baekjoon] 3190: 뱀

    2022.10.23
다른 글 더 둘러보기

정보

Arc 블로그의 첫 페이지로 이동

Arc

  • Arc의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (106)
    • Language (28)
      • C++ (0)
      • C# (0)
      • Java (28)
    • Algorithm (47)
      • Algorithm (15)
      • Data Structure (6)
      • PS (26)
    • Computer Science (22)
      • Design Pattern (1)
      • Network (14)
      • OS (7)
    • Game (0)
      • Unity (0)
    • Backend (3)
      • Spring (1)
      • JPA (2)
    • DB (0)
      • SQL (0)
    • DevOps (2)
      • AWS (0)
      • Docker (2)
      • Jenkins (0)
      • Nginx (0)
    • Software Engineering (4)
      • OOP (4)
    • AI (0)
      • Machine Learning (0)
    • Others (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • java
  • 알고리즘
  • network
  • 자바
  • 네트워크
  • graph
  • algorithm
  • 그래프

나의 외부 링크

정보

SeoArc의 Arc

Arc

SeoArc

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © SeoArc. Designed by Fraccino.

티스토리툴바