인덱스 3

[Algorithm] 백준 17298번: 오큰수 | 스택 응용

문제 출처: https://www.acmicpc.net/problem/17298 1. 결과 메모리 153484KB, 시간 1212ms 2. 풀이 처음에는 이 문제를 이중 for문을 통해 각 자리의 숫자(i번째)마다 이후의 숫자(i+1번째부터 n번째까지)를 탐색하며 큰 수가 있다면 이를 저장하며 break, 없다면 끝까지 탐색 후 -1을 추가하게 되는 방법으로 작성했다. 이 경우는 답은 도출이 되었지만 시간 복잡도가 크게(O(N^2)) 발생되었다. 다른 풀이로는 먼저 첫 숫자에 대해 나머지 숫자를 탐색하며 첫 숫자보다 큰 숫자가 있다면 해당 숫자를 스택에 저장하고, 두 번째 숫자부터 모두 해당 숫자보다 작다면 스택의 마지막 숫자를 그대로 또 추가하는 방식을 적용해봤다. 만약 스택의 마지막 숫자보다 현재 숫..

[Python] 다차원 리스트 생성 시 유의할 점

최근 파이썬을 통해 백준 알고리즘 문제를 풀이하던 중, 리스트로 2차원, 3차원 형태를 만들어야 하는 부분이 있었다. 재귀 함수를 통해 원소 하나하나씩 값을 구하고, 해당 리스트에 저장해야 했다. 나는 아래와 같은 방식으로 리스트를 생성하고, 값을 저장했다. val = [[[0] * 2] * 2] * 2 val[0][0][1] = 7 이를 프롬프트로 진행했을 때, 위와 같은 결과가 되었다. 슬라이싱을 한 적도, 값을 여러 개 지정하려던 의도도 없었는데, 마치 슬라이싱으로 값을 수정한 것처럼 각 리스트의 1번째 원소가 모조리 저장되었다. 솔직히 이전에도 종종 이런 경우가 있었고, 그때마다 결국 그냥 리스트 인덱싱이 아닌, append 함수나 딕셔너리 타입 등을 이용해서 문제를 해결했다. 그러던 중 우연히 ..

[Python] 자료 구조와 배열의 간단 개념

1. 자료 구조의 개념과 목적 자료 구조: 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계. 즉, 데이터가 모여 있는 구조. 코딩과 알고리즘 등에서 자료 구조를 알아야 하는 이유는 컴퓨터에서 처리해야 하는 많은 데이터를 모아 효율적으로 관리하고 구조화하기 위함이다. 2. 배열 Python에서는 이런 자료 구조를 다루기 위해 '배열'을 이용한다. 배열: 단순히 하나의 변수가 아닌, 원소 묶음의 단위. 파이썬에서는 리스트(list)와 튜플(tuple)로 배열이 구현됨. 원소: '배열'에 저장된 객체 하나하나를 일컫는 말. 리스트: 뮤터블(mutable) 자료형으로써, 연산자 [ ] 안에 원소를 쉼표(,)로 구분함. 튜플: 이뮤터블(immutable) 자료형으로써, 연산자 ( ) 안에 원소를 쉼표..