스택과 큐 스택 자료구조 먼저 들어온 데이터가 나중에 나가는 형식 (선입후출) 삽입 & 삭제 리스트 자료형 (append, pop) 출력시에도 최하단 원소부터 출력 최상단 원소 출력? -> print(stack[::-1]) 큐 자료 구조 먼저 들어온 데이터가 먼저 나가는형식 (선입선출) 입구와 출구가 모두 뚫려 있는 터널을 생각하면 됨 deque() 라이브러리 이용 from collections import deque queue = deque() queue.append() # 오른쪽으로 들어와서 queue.popleft() # 왼쪽으로 나감 print(queue) # 먼저 들어온 원소부터 출력 queue.reverse() # 역순으로 바꾸기 print(queue) # 나중에 들어온 원소부터 출력 우선순위..
DataFrame 파이썬에서 사용할 수 있는 데이터분석 라이브러리 Pandas를 사용 index,column 을 사용 2차원형태로 이루어짐. index column import pandas as pd import numpy as np # list 사용하여 Dataframe 만들기 d1 = [[1,2],[3,4],[5,6]] df1 = pd.DataFrame(d1,index=['a','b','c'],columns = ['kor','eng']) df1 -> koreng a12 b34 c56 # dictionary를 사용한 DataFrame 생성 data = {'eng':[10,30,50,70], 'kor':[20,40,60,80], 'math':[90,50,20,70]} df = pd.DataFrame(da..
시리즈 문자열 검색 설명 전 자료만들기 import pandas as pd import numpy as np sr = pd.Series(['홍길동', '이순신', '김철수', '김순이', '이홍김']) sr.index = ['aa','bb','cc','dd','ee'] sr ->aa 홍길동 bb 이순신 cc 김철수 dd 김순이 ee 이홍김 dtype: object # 원하는 자료 자료찾기 sr[sr=='이순신'] -> bb 이순신 dtype: object str accessor # series에서 처음값 찾기 sr[0] ->'홍길동' # series에서 각 값들의처음 값들을 출력 sr.str[0] ->aa 홍 bb 이 cc 김 dd 김 ee 이 dtype: object str.contains - 포함된 ..
[Gold IV] 타임머신 - 11657 https://www.acmicpc.net/problem/11657 문제설명 N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 버스가 M개 있다. 각 버스는 A, B, C로 나타낼 수 있는데, A는 시작도시, B는 도착도시, C는 버스를 타고 이동하는데 걸리는 시간이다. 시간 C가 양수가 아닌 경우가 있다. C = 0인 경우는 순간 이동을 하는 경우, C < 0인 경우는 타임머신으로 시간을 되돌아가는 경우이다. 1번 도시에서 출발해서 나머지 도시로 가는 가장 빠른 시간을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄..
[Gold III] 백양로 브레이크 - 11562 https://www.acmicpc.net/problem/11562 문제설명 서울 소재 Y모 대학교에서 대규모 공사를 진행하면서, 학교가 마치 미로처럼 변해버리고 말았다. 공사 이전까지는 어떤 건물에서 출발하더라도 다른 모든 건물로 갈 수 있는 길이 있었으나, 공사가 진행되면서 어떻게 한 건진 알 수 없지만 일방통행만 가능한 길이 많이 늘고 말았다. 컴퓨터과학과 학생 남규는 전공 수업을 듣고 교양 수업을 들으러 가던 중 길을 잃어 3일 밤낮을 헤매다가 공학관에서 종합관으로 가는 길은 존재하지 않는다는 결론을 내렸다. 3일 사이에 과제도 내지 못하고 출석도 하지 못해 학사경고 위기에 처한 남규는 전공을 살려 현재 일방통행인 길들 중 반드시 양방향으로 바꿔야..
[Gold III] LCA - 11437 https://www.acmicpc.net/problem/11437 문제설명 N(2 ≤ N ≤ 50,000)개의 정점으로 이루어진 트리가 주어진다. 트리의 각 정점은 1번부터 N번까지 번호가 매겨져 있으며, 루트는 1번이다. 두 노드의 쌍 M(1 ≤ M ≤ 10,000)개가 주어졌을 때, 두 노드의 가장 가까운 공통 조상이 몇 번인지 출력한다. 입력 첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개 줄에는 정점 쌍이 주어진다. 출력 M개의 줄에 차례대로 입력받은 두 정점의 가장 가까운 공통 조상을 출력한다. 예제입력 / 예제출..
[Gold IV] 플로이드 - 11404 https://www.acmicpc.net/problem/11404 문제설명 n(2 ≤ n ≤ 100)개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1 ≤ m ≤ 100,000)개의 버스가 있다. 각 버스는 한 번 사용할 때 필요한 비용이 있다. 모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 버스의 정보는 버스의 시작 도시 a, 도착 도시 b, 한 번 타는데 필요..
[Silver I] 영역 구하기 - 2583 https://www.acmicpc.net/problem/2583 문제설명 눈금의 간격이 1인 M×N(M,N≤100)크기의 모눈종이가 있다. 이 모눈종이 위에 눈금에 맞추어 K개의 직사각형을 그릴 때, 이들 K개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 예를 들어 M=5, N=7 인 모눈종이 위에 과 같이 직사각형 3개를 그렸다면, 그 나머지 영역은 와 같이 3개의 분리된 영역으로 나누어지게 된다. 와 같이 분리된 세 영역의 넓이는 각각 1, 7, 13이 된다. M, N과 K 그리고 K개의 직사각형의 좌표가 주어질 때, K개의 직사각형 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어지는지, 그리고 분리된 각 영..
[Silver II] 유기농 배추 - 1012 https://www.acmicpc.net/problem/1012 문제설명 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다. 한나가 배추를 재배하는 땅은 고르지 못해서 배추를 군..
[Silver I] 미로 탐색 - 2178 https://www.acmicpc.net/problem/2178 문제설명 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2 ≤..