BOJ PS/Python
-
컴퓨터구조 과제 관련 지식들BOJ PS/Python 2023. 3. 26. 23:25
1. RISC-V와 ARM은 각각 무엇인가? RISC-V와 ARM은 모드 ISA, 즉 instruction set architecture이다. RISC-V은 일종의 오픈소스 ISA이다. ARM은 라이선스가 필요한 ISA로, RISC-V보다 복잡하다. 수업에서는 RISC-V로 된 예시들을 보아왔지만 과제시에는 아무래도 ARM이 더 널리 쓰이기 때문에 ARM을 이용한다. 2. ARM 코드의 구조 3bit HEX로 된 address와 8bit HEX로 된 instruction으로 이루어져 있다. Address는 어떤 주소에서 instuction을 실행해야 하는지를 알려주고, Instruction은 어떤 명령어를 실행해야 하는 지를 알려준다. 3. Instruction의 구조와 예시. Instruction마다 ..
-
백준 2143 - 두 배열의 합 (Python)BOJ PS/Python 2023. 3. 20. 13:26
https://acmicpc.net/problem/2143 2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1 ≤ m ≤ 1,000)이 주어지고, 그 www.acmicpc.net 원래는 이분 탐색으로 푸는 문제인데, 그냥 dictionary와 누적합으로 풀었다. 이게 왜 됨? 진짜 파이썬은 알다가도 모르겠다. 처음에 생각한 방법으로는 용량이 부족할 것 같아서 안 했는데, 결국에는 처음 생각한 방법으로도 풀리더라. 1. DP를 이용해 시도한 코드 - TLE import sys input=sys.stdi..
-
백준 4386 - 별자리 만들기 (Python)BOJ PS/Python 2023. 3. 13. 22:10
https://acmicpc.net/problem/4386 4386번: 별자리 만들기 도현이는 우주의 신이다. 이제 도현이는 아무렇게나 널브러져 있는 n개의 별들을 이어서 별자리를 하나 만들 것이다. 별자리의 조건은 다음과 같다. 별자리를 이루는 선은 서로 다른 두 별을 일 www.acmicpc.net MST라는 걸 알기만 하면 거의 곧바로 풀 수 있었다. from heapq import heappop, heappush import sys input=sys.stdin.readline n=int(input()) stars=[] star_sets=[] parent=[i for i in range(n)] answer=0.0 cnt=0 for _ in range(n): stars.append(tuple(map(..
-
백준 10775 - 공항 (Python)BOJ PS/Python 2023. 3. 12. 17:08
https://acmicpc.net/problem/10775 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.acmicpc.net 이게 왜 유니온 파인드? 그리디라는 건 보자마자 알았고, 시간 줄여보겠다고 일단 비트마스킹 해봤다. 풀이 1. 그리디+비트마스킹 import sys input=sys.stdin.readline G=int(input()) P=int(input()) answer=0 airport=0 for _ in range(P): cur=int(input()) if airport&1
-
백준 16724 - 피리 부는 사나이 (Python)BOJ PS/Python 2023. 3. 11. 20:20
https://acmicpc.net/problem/16724 방문여부 그래프를 하나 그린다. 그 후 이동하도록 되어 있는 방향으로 이동해봤을때, 1. 이번 경로상에 있을 경우 (사이클이 형성된 경우) : 새로운 safe zone으로 설정 2. 이미 어떤 safe zone으로 이어지는 길일 경우 : 경로의 길들을 safe zone으로 설정 3. 안 가본 길인 경우 : dfs 이어서 하고 이번 경로에 추가. 백만번 탐색하면 끝이니 시간복잡도는 넉넉하다. 유니온 파인드로도 가능할듯하다. import sys input=sys.stdin.readline N,M=map(int,input().split()) graph=[list(input()) for _ in range(N)] visited=[[0 for _ in ..
-
백준 1033 - 칵테일 (Python)BOJ PS/Python 2023. 3. 6. 23:27
https://acmicpc.net/problem/1033 1033번: 칵테일 august14는 세상에서 가장 맛있는 칵테일이다. 이 칵테일을 만드는 정확한 방법은 아직 세상에 공개되지 않았지만, 들어가는 재료 N개는 공개되어 있다. 경근이는 인터넷 검색을 통해서 재료 쌍 N www.acmicpc.net 쉬운 문제인 줄 알고 박았다가 그렇게 이틀을 내리 쓰고도 쉽게 못 푼 문제… 일단 유클리드 호제법 구현이 기억이 잘 안나서 다시 구현해보았다. 결국 수학적인 요소와 dfs를 결합하여 그래프로 풀면 되는 문제였다. import sys input=sys.stdin.readline def gcd(x,y): # gcd 함수 return y if x%y==0 else gcd(y,x%y) def dfs(x,r,y)..
-
백준 21943 - 연산 최대로 (Python)BOJ PS/Python 2023. 3. 4. 19:17
https://acmicpc.net/problem/21943 21943번: 연산 최대로 $N$개의 양의 정수 $X_{i}$와 곱하기 연산자, 더하기 연산자가 총 $N - 1$개가 존재하고 괄호는 무수히 많이 사용해도 된다. 이 연산에는 곱하기 연산자와 더하기 연산자의 우선순위가 동일하다. www.acmicpc.net 골드 2, 오랜만에 시간 기준 1등 먹은 문제. 항상 곱을 최대로 하기 위해서는 최소인 숫자를 가장 크게 해주어야 한다. import itertools N=int(input()) numbers=list(map(int,input().split())) p,m=map(int,input().split()) number_sets=list(itertools.permutations(numbers,N)) ..
-
백준 17142 - 연구소 3 (Python)BOJ PS/Python 2023. 3. 3. 17:47
https://acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 연구소 2와 비슷해보이긴 하지만 난이도는 꽤 차이가 나는 문제였다. 비활성화 바이러스를 어떻게 처리할지가 고민이었는데, 결국 0인 빈 칸을 얼마나 바꿨는지를 기록했다. 즉, 비활성화는 지나가며 q에 추가하지 않지만 0인 빈 칸을 바꾼 count에는 포함시키지 않았다. 그리고 비활성화 바이러스와 벽만 있는 경우에는 바로 0을 출력했다. 다른 부분은 연구소 2와 모두 동일했다. import sys,itertools,..