일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정보처리기사 c언어
- Join
- 프로그래머스
- openCV
- 가상환경
- Matplotlib
- Stack
- 알고리즘 스터디
- 백준
- python
- type hint
- String Method
- 선그래프
- dataframe
- Algorithm
- Selenium
- 알고리즘
- 데이터시각화
- 파이썬
- 노마드코딩
- 알고리즘스터디
- programmers
- NumPy
- pandas
- 자료구조
- queue
- javascript
- aws jupyter notebook
- MySQL
- 코딩테스트
- Today
- Total
목록DataStructure & Algorithm (49)
조금씩 꾸준히 완성을 향해
문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 예제..
문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 예제 입력 13 but i wont hesitate no more no more it cannot wait im yours 예제 출력 i im it no but more wait wont yours cannot hesitate 내가 ..
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 예제 입력 5 0 4 1 2 1 -1 2 2 3 3 예제 출력 1 -1 1 2 2 2 3 3 0 4 내가 짠 코드 import sys input = sys.stdin.readline n = int(input()) li = [] for _ i..
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 예제 입력 1 복사 5 3 4 1 1 1 -1 2 2 3 3 예제 출력 1 복사 1 -1 1 1 2 2 3 3 3 4 내가 짠 코드 import sys input = sys.stdin.readline n = int(input()) li = ..
문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 예제 입력 1 2143 예제 출력 1 4321 내가 짠 코드 n = list(map(int, input())) #입력값 리스트로 받아오기 n.sort(reverse=True) #내림차순으로 리스트 정렬 n = ''.join(map(str, n)) #리스트를 문자열로 변경 print(n) 이번엔 최대한 짧고 간결하게 짜보려고 노력했다. 입력값 문자열을 바로 리스트 형태로 바꾸어 가져왔고, 리스트 정렬 후 다시 문자열로 바꾸었다. map 함수와..
문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 복사 5 5 2 3 4 1 예제 출력 1 복사 1 2 3 4 5 내가 짠 코드 n = int(input()) l = [] for _ in range(n): # 입력을 받아와 리스트로 만들기 a = int(input()) l.append(a) for j in range(len(l)-1): # 자리 바꾸기 작업을 완전히 오름차순 정렬이 될 때까..
Queue FIFO(First In First Out, 선착순) : 삽입할 땐 가장 최근에 저장된 값 다음에 저장되고(stack과 동일) 삭제할 땐 가장 오래전에 저장된 된 값부터 나간다. enqueue(val) : value를 큐의 오른쪽(rear)에 삽입 (push와 같음) dequeue(): 가장 왼쪽에 저장된 값을 삭제 후 리턴 dequeue를 상수시간에 실행하기 위해선, dequeue가 될 값의 인덱스(index)를 저장하고 관리한다 → dequeue가 되면, 인덱스 값이 하나 증가하여 다음 dequeue 될 예정인 값의 인덱스를 가리키도록 관리! ▶ Queue class 생성 class Queue: def __init__(self): # 생성자 함수 self.items = [] # 데이터 저장..
Stack LIFO(Last In First Out) : 값을 저장할 때는 가장 최근에 저장된 값 다음에 저장되며, 값이 나갈 때는 가장 최근에 저장된 값이 먼저 나간다 데이터는 리스트에 저장 (append, pop 함수가 제공되므로) 연산은 push, pop, top, isEmpty, size(len) 등 5 가지 연산 제공 ▶ Stack class 생성 class Stack: def __init__(self): # 생성자 함수 self.items = [] # 데이터 저장을 위한 리스트 준비 def push(self, val): #삽입 self.items.append(val) def pop(self): #삭제 try: # pop할 아이템이 있으면 return self.items.pop() # pop 수..
Array (배열) & List (리스트) 데이터를 연속적인 메모리 공간에 저장하고, 저장된 곳의 주소(address, reference)를 통해 매우 빠른 시간에 접근할 수 있는 가장 기본적인 순차적인(sequential) 자료구조 C 언어의 배열 ▶ 배열의 저장 및 메모리 할당 int A[4] = {2, 4, 0, 5} // 정수 4개를 저장할 수 있도록 연속적인 메모리 공간 할당 A[2]의 주소 = A[0]의 시작 주소 + 2 * 4 bytes (index=2, sizeof(int)=4) //108번째 배열의 시작 주소, 저장된 값의 종류(바이트 개수), 몇 번째에 저장되어 있는지를 나타내는 인덱스(index) 세 가지 정보만으로 값이 저장된 곳의 주소를 계산할 수 있다 => 메모리 주소가 주어지면..