본문 바로가기

환영합니다. 이 블로그 번째 방문자입니다.

분류 전체보기

  (98)

[프로그래머스: JAVA] 키패드 누르기 문제 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-1...
[CS 스터디: Java] (7) B Tree & B+ Tree B-Tree : 모든 리프 노드들이 같은 레벨이 있어야 하는 트리 구조 : self-balancing tree → 스스로 균형을 맞추는 트리 → 같은 레벨에 있도록 : 노드는 2개보다 많은 자식을 가질 수 있음 : 데이터 삽입, 삭제 시 스스로 균형을 맞춰야 하므로 일반 이진 트리보다 복잡한 연산이 필요함 : 하지만 탐색 시에는 어떤 값에 대해서도 최대 시간이 같으므로 빠름 : 높이는 가능한한 낮게 유지해야 함 B+Tree : B-Tree의 확장개념, : ? 모르겠다. 스터디 후 작성하도록 하겠음
[CS 스터디: JAVA] (6) 트라이 트라이(Trie) : 문자열 집합을 저장하고 탐색하기 위한 트리 형태의 자료 구조 : 자동완성 기능, 사전 검색등에 특화되어 있는 구조(단어의 앞글자부터 찾는) -- 예를 들어, "bear" 을 찾을 때 'b' 를 찾고 'e','a','r'를 순서대로 찾는다. >> bell, bear, bore, bat, ball, stop, stock, stack을 저장한 트라이 트리 구조 → Trie 구조의 특징 (1) 항상 루트 노드는 null 노드 (여러개 집합의 문자열을 저장해야 하므로) (2) 각각의 자식 노드들은 알파벳 순서대로 정렬 (3) 각각의 노드는 최대 26개의 자식을 가질 수 있음(A부터 Z까지) (4) 루트 노드를 제외한 각각의 노드는 1개의 알파벳 노드를 저장할 수 있음 (5) 삽입하는 가장 긴..
[CS 스터디 : JAVA] (5) 해시, Hash https://sennieworld.tistory.com/35?category=965527 [10] Hash Table, 해시 테이블 ✅ 해시 테이블이란 해시 테이블(Hash Table)은 키(Key)에 데이터(Value)를 저장하는 자료형이다. 파이썬에서 공부했던 딕셔너리와 비슷한 개념 정도가 아니라, 해시를 구현할 때 딕셔너리 타입을 사 sennieworld.tistory.com 👆 기본 개념 확인 → 선언 방식 -- java.util.Hashtable 패키지 import -- Hashtable 해시테이블명 = new Hashtable(); 으로 선언
[CS 스터디 : JAVA] (4) 이진 탐색 트리 이진 탐색 트리(Binary Search Tree, BST) : 이진트리 + 조건 한개 추가(모든 노드에 대해 왼쪽 노드의 데이터 중복된 키를 허용하지 않음 : 중위 순회 방식 ( 왼 - 루트 - 오) → 선언 방식 class BinarySearchTree { class Node {// 노드 클래스 : 데이터, 왼쪽 노드, 오른쪽 노드 int data; Node left, right; public Node(int item){ // 생성자 초기화 data = item; left = right = null; } } Node root; // 루트 노드 Binar..
[CS 스터디 : JAVA] (3) 트리 2022.04.18 - [Python/[Data Structure] 자료구조] - [7] Tree, 트리 [7] Tree, 트리 👇🏻 오늘도 여김없이 오늘의 짤 더보기 무는 뿌리를 바탕으로 가지를 통해 잎이 난다. 나무에 영양분이 공급되는 경로(루트)가 트리(Tree)의 자료구조 형태와 비슷하다. 오른쪽 그림이 트리 자 sennieworld.tistory.com 참조
[CS 스터디 : JAVA] (2) Stack & Queue & Heap 1️⃣ Stack : 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 구조 : 후입선출 > 가장 마지막에 들어온 원소가 가장 첫 번째로 나옴 : 스택의 가장 마지막으로 들어온 원소(맨 윗 원소)를 top이라고 함 : java.util.AbstractCollection 상속받음 → 선언 방식 -- java.util.Stack 패키지 임포트 → Stack의 특징 (1) LIFO 구조 (2) 재귀 함수를 호출할 때 사용 > 잘못된 재귀 호출 시(깊은 재귀에 빠져버릴 때) 나는 에러가 StackOverflowError(스택 꽉 차 있음) (3) 통용되는 메서드명이 존재함 > top, push, pop 등 (3) java.util.Stack 패키지에서 다양한 메서드를 제공(java.util.AbstractCollect..
[CS 스터디 : Java] (1) Array, ArrayList, LinkedList 1️⃣ Array, 배열 : 자료형의 집합 → 선언 방식 → 배열의 특징 (1) 배열의 길이(크기)는 고정 (2) 반복문과 인덱스를 통해 배열의 값 접근 (3) [배열이름.length] 를 사용해 배열의 길이 접근 2️⃣ ArrayList : 배열과 유사한 자료형의 집합 : List 자료형(인터페이스) 중 하나 → 선언 방식 -- java.util.ArrayList 패키지를 import 해서 사용 -- ArrayList 리스트이름 = new ArrayList(); → ArrayList의 특징 (1) 배열의 길이가 동적으로 변함 > 원하는 만큼의 값을 담을 수 있음 > 자동으로 크기가 늘어남 (2) 다양한 메서드를 제공 > CRUD 구현 가능 메서드 기능 메서드 명 반환 타입 원소 추가(C) add(E e..
[🐾 일지] 리액트 스크롤 달력 만들기 프로젝트 TODO LIST 기능을 위해 만든 캘린더이다. 기능은 다음과 같다. 1. 오늘이 포함되어 있는 년도(2022)만의 1월부터 12월까지의 달력을 스크롤로 보여줌 2. 맨 위의 오늘 날짜를 클릭할 경우, 해당 월의 달력으로 이동함 3. 맨 처음 보여줄 때에는 오늘 날짜의 달력이 가운데에 보여짐(1월부터 X) 시작! 이전 포스트와 비슷한 부분이 많으니 먼저 보고 오는 것이 좋을 것 같다. 2022.06.01 - [프로젝트 일지] - [🐾 일지] 리액트 달력 만들기 [🐾 일지] 리액트 달력 만들기 프로젝트에서 그림 일기를 달력으로 보여주는 기능이 필요해서 달력을 제작하게 되었다. 라이브러리를 사용해도 되지만 달력의 셀 안에 이미지를 넣어야 하기 때문에 직접 그리기로 했다. 그럼 sennieworld...
[🐾 일지]띠용 Textarea와 한 바보의 이야기 줄바꿈이 있는 input이 필요해서 textarea로 작성을 했는데..? 흠..? 👇🏻 내 textArea의 onChange 함수 export const Content = (props: { setContent: Dispatch; }) => { var [sentence, setSentence] = useState(''); const handleWriting = (e: any) => { setSentence((sentence += e.target.value)); props.setContent(sentence); }; return ( ); }; 바보같은 코드를 썼다. 왜 저런 코드를 썼을까? 심히 반성이 필요할 듯. export const Content = (props: { content: string; se..
Dynamic Programming (DP) - Memoization DP의 핵심 Memoization : 메모이제이션 (top, down) Tabulation : 타뷰레이션(bottom up) Alvin's Memoization Recipe 1. Make it work visualize the problem as a tree implement the tree using recursion test 2. Make it efficient add a memo object (set,arr,..) add a base case to return memo values store return values into the memo 피보나치 ❌ DP def fibonacci(n): if n
[👾] 스트레스 푸는 법 2N 년의 인생을 살아오며 나 자신에 대해 확신할 수 있는 것은 난 스트레스에 취약한 인간 이라는 것이다. 스트레스를 받을 때는 손에 스트레스만 잡힌다. 일 따위 안 잡힘. 요즘 그 유명한 취.준. 스트레스 때문에 정신이 황폐 피폐 (지폐였으면...) 해 져버려서 혼미하다 각자 스트레스를 다루는 방법이 있을 텐데 나에게는 3가지 돌파구가 있다. 1. 러닝하기 내가 유일하게 러닝을 나가는 날은 스트레스가 최고조에 달한 날이다. 러닝을 열심히 하지는 않는다. 대신 멋있는 척하면서 한다.ㅎʕ•̬͡•ʔㅎ 누가 신경이나 써? 전혀 안 쓰지~~ {몸에 착 감기는 스포츠웨어+볼캡+에어 팟+복대+언더아머 러닝화} 이 조합은 대기업 다니면서 자기 관리도 열심히 하는 사람처럼 보이게 한다. 원래 사람들은 보고 싶은 것만 ..
[React 달력] 일요일이 아닌 월요일부터 시작하는 달력으로 수정하기 드디어...내 블로그에도 질문이..!!! (감 격) 👇🏻 질문 달린 포스트 https://sennieworld.tistory.com/61 [🐾 일지] 리액트 달력 만들기 프로젝트에서 그림 일기를 달력으로 보여주는 기능이 필요해서 달력을 제작하게 되었다. 라이브러리를 사용해도 되지만 달력의 셀 안에 이미지를 넣어야 하기 때문에 직접 그리기로 했다. 그럼 sennieworld.tistory.com 저번 달력 -> 이번 달력으로 바꾸려면 다음의 부분을 수정해주면 된다. 끝!
[JS -> TS] 프로젝트 변환하기(1) useState 변수 props 호기롭게 시작했지만 오류가 폭발했다. 친구들이 맨 처음에는 다들 그런 거라며 위로했지만 위로 안됨...ㅎ About 컴포넌트의 setIsBlur(useState 변수)를 Header에 넘겨야 한다. JS에서는 props로 넘기기만 하면 되지만, TS 세상에서는 그게 먹히지 않나 보다. 그래서 인터넷에 찾아보니...이게 안 된다고...ㅎ About에서는 그대로 넘긴다. 다만, Header에서 받는 방식이 다르다. 이것이 정확히 맞는 방식인지는 잘 모르겠다. 확실한 건, 뭐 하나 안 맞으면 오류가 나는 TS에서 오류가 나지 않고 잘 작동한다. interface에 useState변수를 Dispatch하고 SetStateAction에 변수 타입을 지정해준 다음, 컴포넌트에 해당 타입을 props로 넘겨주고 사용..
프론트엔드 개발 프로젝트 폴더 구조 지금까지 2개의 프로젝트를 해 보았다. 첫 번째 프로젝트의 구조는 지금 보면 한숨만 나올 정도로 darty하고 confusing하다. 구조를 바꿀 생각도 못한다. 프로젝트 중간에 몇번 바꿀까 같이 개발하는 친구에게 물어봤지만 우리의 목표는 clean code가 아니었고 function implement였기에 넘어갔다. 두 번째 프로젝트는 지금하고 있는 프로젝트인데 한 번 저 난리를 당해봐서 folder structure에 많은 노력을 쏟을 생각이었다. 좋은 폴더 구조를 향해 떠났지만, 워낙에 주관적인 것이라 정답이 없다. 프로젝트 페이지가 많아서 페이지별로 폴더를 만들고 하위에 style, api, util, component로 나누어 폴더를 관리했다. 이전보다 수월한 느낌은 있지만, 지금 프로젝트를 전..
Typescript types 지금까지 짠 프로젝트를 타입스크립트로 변환해보잣. 근데 나는 ts의 아무것도 모른다. 그래서! 공부 시작! 기존의 대충 흘려보던 타입스크립트의 가장 큰 차이점 : 타입을 지정해주는 것이다. 이게 뭔가? 했는데 이게 뭔지 알아보겠다. 가장 기초 타입 string, number, boolean 배열 숫자 배열 : number[], Array 문자열 배열 : string[], Array 단, [number]은 다른 얘기이다. 이것은 튜플이다. any 아직 특정한 값을 갖지 않았을 때 타입 체크 오류를 방지하는 타입스크립트의 특별한 타입이다. 값의 타입이 any이면, 어떠한 타입이라도 접근이 가능하다. let obj: any={x:0}; // 아래의 코드들은 오류가 나지 않는다. obj.foo(); obj();..
[백준] 다시 풀어봐야 할 문제 모음 1. https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 2. https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 3. h..
[Q3:English] Kth largest element Given an array of integers arr and an integer k find the kth largest element. (1 ≤ k ≤ length of arr) For example, arr = [4,2,9,7,5,6,7,1,3], k = 4, output : 6. [ Method 1] # Logic Remove max element in the arr for k-1 times and return max element. # Code # Complexity T(n,k) : (k-1) * 2n + n = O(kn) S(n) : O(1) [Method 2] # Logic Use sorting # Code # Complexity T(n,k) : O(nlogn) + O(1) = O(nlogn..
[Q2:English] First and last index in sorted array 👇🏻 문제(이 정도는 해석X...귀찮,, 영어강의라 포스트도 영어로) Given a sorted array of integers arr and an integer target, find the index of the first and last position of target in arr. In targer can't be found in arr, return [-1,-1]. For example, arr = [2,4,5,5,5,5,5,7,9,9], target = 5 👉🏻 output : [2, 6] [Method 1] # Logic # Code # Complexity S(n) = O(1) T(n) = O(n) [Method 2] How about using binary search? Because i..
[Q1:Korean] Anagram, 철자 확인 👇🏻 문제 문자열 s1, s2가 주어졌을 때, 그들이 anagram인지 확인해라. 두 문자열이 같은 빈도의 같은 문자로 이루어졌다면 anagrams가 맞다. 예시 ) s1 = "danger" , s2 = "graden" 은 anagram이다. [ 방법 1 ] 기본 로직 freq1 = s1의 문자들의 빈도수 freq2 = s2의 문자들의 빈도수 freq1 == freq2 👉🏻 s1과 s2는 anagram 이 로직을 수행하기 위해서는 a~z까지의 알파벳 테이블에 문자가 얼마나 들어갔는지 cnt를 계산해서 비교할 수 있다. 하지만, Hash Table 을 쓰면 되는데 용량 낭비까지 할 필요는 전혀 없다. s1 = "nameless" , s2 = "salesman" freq1 == freq2 => s1과 s2는..
[🐾 일지] 리액트 달력 만들기 프로젝트에서 그림 일기를 달력으로 보여주는 기능이 필요해서 달력을 제작하게 되었다. 라이브러리를 사용해도 되지만 달력의 셀 안에 이미지를 넣어야 하기 때문에 직접 그리기로 했다. 그럼 시작! ↓ 스크롤 달력은 아래에 2022.06.27 - [프로젝트 일지] - [🐾 일지] 리액트 스크롤 달력 만들기 [🐾 일지] 리액트 스크롤 달력 만들기 하이... 블로그 오랜만... 한 4일 동안 인생 첫 면접(심지어 취업도 아니고 교육 면접...)에 멘탈도 털리고 누가 봐도 불합격을 치르고 와서 정신줄 놓고 지내고 있었다..ㅎ 면까몰이지만...아니 제 sennieworld.tistory.com 0️⃣ 뼈대 만들기 1️⃣ header 만들기 (오늘 날짜, 달력 이동 아이콘) header를 div 안에 직접 작성하지 않고..
[💡 일지] RESTful API Design # 인트로 : 중요한 내용 아님 더보기 나는 변수 네이밍에 꽤 많은 시간과 관심을 들이는 편이다. 1. 협업을 할 때 나를 제외한 다른 사람도 알아챌 수 있어야 하며 2. 서비스 전체 틀 구조에서의 통일성을 가져야 한다는 이유 때문이다. 현재 프로젝트는 프론트엔드를 혼자 해서 별 상관이 없지만, 백엔드에서 주는 api url 과 변수명에 조금의 혼돈이 왔다. 약간 혼자 예민보스인 부분...이걸 말씀드릴까 하다가 나는 백엔드 지식 0이라 무작정 말씀드릴 순 없어서 공부를 하고 제안을 해보기로 했다. 오히려 좋아 내가 어제 밤에 따끈따끈하게 전달받은 url 이다. 한눈에 보기에도 알아차리기 어려우며 프론트에게 혼란을 준다. 변수명은 영어의 뜻과 맞지 않는 변수가 가끔 보인다. 데이터베이스가 완전히 구축되기 ..
[➕ 오답노트] 백준 1697번 👇🏻 문제 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 메모리 초과가 난 문제, 메모리를 정해 큐와 시간 배열을 함께 사용하는 문제 나는 이렇게 두 가지 자료구조를 한 번에 사용하는 데에 머리가 안 돌아가는 것 같다. 굳이? 라는 느낌이 들면 무조건 _ _ _ 초과가 뜬다. 인터넷에 널려있는 정답 코드지만 이유가 있겠지... 자료형의 크기에 주의하자. import sys from collections import ..
[🎄] 인간관계 - 실수 이런 이야기 따위 절대 쓸 것 같지 않는 테크 블로그에 왜 이런 주제의 글을 쓰게 됐는지 이야기해보자. 나는 네이버 블로그를 했다. 일상을 올리고 블로거 친구들과 공유하는 용도였는데 나만 취업 안되고 이기적인 생각이 자꾸 들어 때려치웠다. 하지만, 나는 항상 내 이야기를 해야 하는 사람이다. 생각을 공유하는 것을 좋아하고 일종의 스트레스 해소책이다. 인간관계는 어렵다. 마음 속에 🔥가 적고 🙂 남들을 100번 배려할 수 있는 사람에게는 해당되지 않는 말일 수도 있다. 하지만, 대부분은 어려워한다. 특히나 나는 더욱 더 그렇다. 내 인간관계는 유치원 때부터 꼬였다. 초등학교 때에는 꼬인 매듭을 단단하게 하고 중학교 때에는 매듭을 삼켜버렸다. 나는 중학교 때 괴팍 쌈닭 girl이었다. 성격이 너무나도 괴팍해..
[➕ 오답노트] 백준 7576번 배열 BFS 👇🏻 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 배열 자료구조의 DFS는 많이 풀어봤지만, BFS는 처음이다. 그래서 못 풀었다 ㅎ import sys from collections import deque M, N = map(int, sys.stdin.readline().strip().split()) tomato = [list(map(int, sys.stdin.readline().strip().split())) for..
[💡 일지] 프로젝트 명, 로고, 색상, 이미지 참조에 도움이 되는 것들 나는 눈에 보일 수 있게 형상화하는 것이 이해에 도움이 된다고 생각하는 사람이다. 미술적, 시각적 요소의 디자인을 배운 적은 없지만, ZERO 의 안목을 가지고 있다고 생각하지는 않는다. 지금 하고 있는 토이 프로젝트의 주제는 반려견의 일상을 특별하게 기록하는, 반려견 다이어리 이다. 혼자 하고 있는 것은 아니고 👩🏻‍💻(나, 프론트엔드)+👩🏻‍💻(토끼, 백엔드) 이렇게 두명이 캠퍼스픽에서 만나 진행하고 있다. 내가 제시한 주제이기에 내 머리속에는 어떤 서비스를 하고 싶다는 것이 어느 정도 정돈되어 있었다. 문제는 토끼에게 내가 생각하는 컨셉을 정확하게 설명하는 것이었다. 어떤 기능의 서비스를 할 것인지는 그 이후에 논의할 일이었다. 내가 '생각'하는 컨셉을 정확하게 '전달'하기 위해서는 내 자신에게도 ..
[리액트 클린코드 #1] 컴포넌트 관리 Extension 리액트 클린코드에 관한 고민은 항상 가지고 있었다. 중구난방으로 코드를 짜다보면 코드가 So dirty... 해지기 때문에 기분이 안 좋아진다. 그러던 와중 너무 늦게 알아서 쫌 쫘증나는 extension...모두들 미리 알아서 언렁 써먹길... 아직 서버 연결을 하지 않은 컴포넌트라 코드가 더 더러운게 사실이지만 어쨌든! 내가 소개하고 싶은건 glean extension이다 누가 개발했는지는 몰라도 천재가 확실함 이것을 어떻게 쓰는지 살펴보자. 아래의 코드는 웬만한 프로젝트에서 가지고 있는 Header의 navBar 코드이다. import React, { useState } from 'react'; export const Header = () => { const [count, setCount] = us..
[➕ 오답노트] 백준 11478번 👇🏻 문제 https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 간단하지만, 시간초과와 싸워야 하는 문제이다. 나는 당연히 2중 포문을 사용해서 코드를 작성했지만, 항상 공개되어 있는 정답코드와 비교해보곤 한다. # Nesty Code : 508ms import sys str = sys.stdin.readline().strip() combi = {} for i in range(1,len(str)+1): for j in range(len(str)-i+1): combi[str[j:j+i]]=0 print(len(combi..
Binary Search, 이진 탐색 이진탐색은 정렬된 배열 안에서 타깃 값의 인덱스를 찾는 탐색 알고리즘이다. 이진탐색은 배열의 중간 인덱스의 값을 타깃 값과 비교해 타깃 값의 인덱스를 찾는다. 1. 문제 상황 문제 상황을 가정해 보자. 우리는 숫자 X가 위의 배열에 존재하는지 살펴볼 것이다. ⓵ X = 21 , 3번 인덱스에 존재 ⓶ X = 25 , 존재하지 않음 ⓷ X = 81 , 7번 인덱스에 존재 위의 상황을 해결하는 가장 간단한 방법은 배열을 전부 스캔해 X 값을 찾는 것이다. 0번 인덱스로부터 시작해, 타깃 값을 찾으면 인덱스 반환 및 종료를 하면 된다. 다만, 존재하지 않는 것을 알기 위해서는 8번 인덱스까지 스캔해야만 한다. 이 탐색 법은 최악의 경우, 배열의 사이즈만큼의 시간 복잡도가 필요하다. 다행히도, 이 상황을 선형 ..
[ ➕ 오답노트] 백준 17298번 오큰수 👇🏻 문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 스택이란 이렇게 쓰는 거지를 알려주는 문제 같다. 스택에 인덱스를 넣어서 비교하는 방법과 스택에 값과 인덱스를 함께 넣어서 비교하는 방법이 있다. 나는 후자가 더 이해가 잘 가서 후자로... import sys A = int(sys.stdin.readline()) data = list(map(int, sys.stdin.readline().split())) answer = [-1] * A stack..