[파이썬/python] 백준 24523 - 내 뒤에 나와 다른 수

2024. 9. 12. 20:38·알고리즘
반응형

문제

https://www.acmicpc.net/problem/24523

문제 설명

  1.   수열 A가 주어진다.
  2. $1\le i \le N$인 정수 $i$마다 $i < j \le N$이고 $A_i \ne A_j$인 정수 $j$중 최솟값을 출력하라. 
  3. 만약 이러한 j$j$가 없다면 −1$-1$을 출력하라.

풀이

  1. 수열을 순회하면서 현재 인덱스와 이전 인덱스가 다른 위치를 찾아 배열에 저장한다.
  2. 값이 전환되는 포인트를 기점으로 반복문을 통해 해당 위치의 인덱스를 사이의 범위만큼 출력한다.
    1. 마지막 포인트일 경우 -1을 출력한다.

코드

import sys
input = sys.stdin.readline

N = int(input())
arr = list(map(int,input().split()))

prev = arr[0]
lst = []
for i in range(1, N):
    if prev != arr[i]:
        lst.append(i)
        prev = arr[i]
lst = [0] + lst + [N]
for i in range(1, len(lst)):
    for _ in range(lst[i-1], lst[i]):
        print(-1,end=' ') if i == len(lst)-1 else print(lst[i]+1,end=' ')

시간복잡도

  • 값이 달라지는 위치를 배열에 저장할 때 약 $O(N)$의 시간복잡도를 가진다.
  • 결과값을 출력할 때도 약 $O(N)$의 시간복잡도를 가진다.
  • 따라서 총 시간복잡도는 최악일 경우 $N = 10^6$, 약 $O(2*N)$의 시간복잡도를 가진다.
반응형

'알고리즘' 카테고리의 다른 글

[파이썬/python] 백준 10469 - 사이 나쁜 여왕들  (2) 2024.09.15
[파이썬/python] 백준 29155 - 개발생 지망생 구름이의 취업 뽀개기  (1) 2024.09.12
[파이썬/python] 백준 15966 - 군계일학  (1) 2024.09.08
[파이썬/python] 백준 24460 - 특별상이라도 받고 싶어  (1) 2024.09.08
[파이썬/python] 백준 21317 - 징검다리 건너기  (1) 2024.09.08
'알고리즘' 카테고리의 다른 글
  • [파이썬/python] 백준 10469 - 사이 나쁜 여왕들
  • [파이썬/python] 백준 29155 - 개발생 지망생 구름이의 취업 뽀개기
  • [파이썬/python] 백준 15966 - 군계일학
  • [파이썬/python] 백준 24460 - 특별상이라도 받고 싶어
개골개굴
개골개굴
굶고 코딩하기
  • 개골개굴
    밥스토리
    개골개굴
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (144)
      • 알고리즘 (124)
      • Java (2)
      • 자기개발 (18)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    springboot
    java
    컴퓨터구조
    python
    인프런
    async
    파이썬
    completablefuture
    알고리즘
    SMTP
    백준
    Redis
    컴퓨터 구조
    작심삼일 챌린지
    OS
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
개골개굴
[파이썬/python] 백준 24523 - 내 뒤에 나와 다른 수
상단으로

티스토리툴바