뒤돌면 할일이 "ㅎㅇ?" 하고 있는 주입니다. 정말 행복하네요.
https://www.acmicpc.net/problem/1920
1920번: 수 찾기
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들
www.acmicpc.net
import sys
n = int(sys.stdin.readline())
a_lst = sys.stdin.readline().strip().split(' ', n)
m = int(sys.stdin.readline())
m_lst = sys.stdin.readline().strip().split(' ', m)
dic = dict()
for i in a_lst:
dic[i] = 1
for i in m_lst:
if i in dic:
print(1)
else:
print(0)
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내는 프로그램 작성.
> 어 어디서 본 형식인데.. 하다 약 2주 전에 풀었던 문제와 접근법이 거의 같다 생각하여 조금.. 참고했읍니다. ㅎㅎ 이렇게 말하는 나 제법 솔직해요.. 비슷한 문제 풀었다고 첫 시도만에 풀어낸 나 제법 멋있어요...
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
import sys
n = int(sys.stdin.readline())
d = []
for i in range(n):
demands = sys.stdin.readline().strip().split(' ')
if demands[0] == 'push':
d.insert(0, int(demands[1]))
elif demands[0] == 'pop':
if len(d) == 0:
print(-1)
else:
print(d.pop())
elif demands[0] == 'size':
print(len(d))
elif demands[0] == 'empty':
print(int(len(d)==0))
elif demands[0] == 'front':
if len(d) == 0:
print(-1)
else:
print(d[-1])
elif demands[0] == 'back':
if len(d) == 0:
print(-1)
else:
print(d[0])
수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램 작성. 출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력.
> 이전에 queue 관련 문제를 풀 때 참고했던 블로그를 다시 한번 봤습니다. 큐는 기본적으로 FIFO를 따르므로 enqueue를 위해 append를 씁니다. collections의 deque를 주로 쓰는데, 양방향 연결 리스트라서 단순한 enqueue와 dequeue를 반복하기 위해서라면 리스트보다 훨씬 효율적이라고.. ;3
> 무지성으로 def pop(), def size(), def empty()등을 만들다 def push()를 어케 만들어야 하지..!?!!? 란 고민에 빠져 구글링을 했읍니다. 명령을 리스트처럼 생각해서 조건문으로 쓰셨더군요 다들... ㅎ.. ㅎㅎ 그래서 갈아엎었읍니다..
> 예제와 계속 다르게 출력이 되길래(front에 d[0], back에 d[-1]을 썼었음..) 뭘 잘못썼지? 싶어 아무리 찾아봐도 모르겠더라구요. 그래서 다른 분 풀이를 보고 바로 이해가 되었습니다. Queue는 FIFO란 걸.. 먼저 들어갔으면 먼저 나와야 한다는 뜻은 맨 뒤에 있는 것 = 제일 최근에 들어간 것, 맨 앞에 있는 것 = 제일 예전에 들어간 것이란 걸..
> 헷갈리긴 한데 이해하면 나름 쉬..쉽나?
(참고 블로그: https://mong9data.tistory.com/36?category=885885)
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
from collections import deque; import sys
n = int(sys.stdin.readline())
d = deque()
for i in range(n):
demands = sys.stdin.readline().strip().split(' ')
if demands[0] == "push_front":
d.insert(0, int(demands[1]))
elif demands[0] == "push_back":
d.append(int(demands[1]))
elif demands[0] == "pop_front":
if len(d) == 0:
print(-1)
else:
print(d.popleft())
elif demands[0] == "pop_back":
if len(d) == 0:
print(-1)
else:
print(d.pop())
elif demands[0] == "size":
print(len(d))
elif demands[0] == "empty":
print(int(len(d)==0))
elif demands[0] == "front":
if len(d) == 0:
print(-1)
else:
print(d[0])
elif demands[0] == "back":
if len(d) == 0:
print(-1)
else:
print(d[-1])
정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램 작성. 출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력.
> 위의 문제와 거의 동일한데 deque를 쓴다는 점만 달라요. 이런 비슷하지만 다른 문제를 풀 때마다 괜히 뿌듯함을 느낍니다.. 훗ㅎ
면목 없지만 이번 주 데이터분석은 못할 것 같습니다. 교수님들은 왜이렇게 과제를 좋아하실까요... 기말고사 공부도 해야하는데 말이죠. 그저.. 쉬고싶습니다. 빨리 종강...
'STUDY' 카테고리의 다른 글
파이썬 스터디 ver3. 2주차 (1) | 2022.07.06 |
---|---|
파이썬 스터디 ver3. 1주차 (0) | 2022.06.27 |
파이썬 스터디 ver2. 4주차 (0) | 2022.05.12 |
파이썬 스터디 ver2. 3주차 (1) | 2022.05.08 |
파이썬 스터디 ver2. 2주차 (4) | 2022.04.05 |