BaekJoon
1475번 - 방 번호 python
1475번 - 방 번호 python
2019.10.221475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net #!/bin/python3 # prob 1475 # 6과 9는 특별한 경우 이므로 _ 로 치환 val = input("").replace('6','_').replace('9','_') # 0 ~ 9 숫자 세트 하나 구매 count = 1 sets = list() sets.append(['0','1','2','3','4','5','_','7','8','_']) # 여기도 역시 6과 9를 _로 치환 for num in val: check = 0 for c in range(0,count): # 구매한 숫자 세트 만큼 loop if num in sets[c]..
[BaekJoon] - 1193 분수찾기
[BaekJoon] - 1193 분수찾기
2019.10.141193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 아래 표 처럼 번호 순서대로 규칙성을 가지고 있다. 1은 (1,1)로 시작하고, 2는 (1,2), 3은 (2,1), 4는 (3,1), 5는 (2,2)... 라고 필자는 좌표로 설정하고 코딩을 했다. 만약 사용자가 5라고 입력했을때, 출력되어야 하는 좌표는 (2,2) 이고 답은 2/2 이다. 1 > 5 1 + 2 > 5 1 + 2 + 3 > 5 1 + 2 + 3 일때 사용자가 입력한 값보다 처음으로 크므로, 이때 i=3이라고 하자. i가 홀수 일때는 (1,i)에서, 즉 6에서 x축으로 -1, y축으로 +1해서 5의 위치는 (1, i) + (1,-1) = (2,2) 라는 결과를 얻을 수 있다. 1..
[BaekJoon] - 10773 제로
[BaekJoon] - 10773 제로
2019.10.1310773번: 제로 문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ www.acmicpc.net if __name__ == "__main__": count = int(input("")) stack = list() while count > 0: val = int(input("")) if val == 0:..
[BaekJoon] - 10871 x보다 작은 수
[BaekJoon] - 10871 x보다 작은 수
2019.10.1310871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net #!/bin/python3 # File name: poc.py if __name__ == "__main__": n, x = map(int, input("").split(" ")) number = input("").split(" ") result = list() for i in number: if x > int(i): result.append(i) print(" ".join(result))
[BaekJoon] - 10936 base64 디코딩
[BaekJoon] - 10936 base64 디코딩
2019.10.1210936번: BASE64 디코딩 첫째 줄에 문자열 S를 BASE64로 인코딩한 결과가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다. www.acmicpc.net #!/bin/python3 # base64 디코딩 import string BIT = 8 if __name__ == "__main__": table = string.ascii_uppercase + string.ascii_lowercase + string.digits + "+/" b64_table = dict() count = 0 # Create base64 Table for char in table: b64_table[char] = str(count) count += 1 # Input ciph..
[BaekJoon] - 10935 base64 인코딩
[BaekJoon] - 10935 base64 인코딩
2019.10.1210935번: BASE64 인코딩 첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다. www.acmicpc.net #!/bin/python3 # base64 인코딩 import string BIT = 6 def padding(binary): return binary + '0' * (BIT - len(binary) % 6) if __name__ == "__main__": b64_table = dict() count = 0 for char in string.ascii_uppercase + string.ascii_lowercase + string.digits + "+/": b64_table[str(count)] = char count += ..
[BaekJoon] - 10845 큐
[BaekJoon] - 10845 큐
2019.10.1210845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net #!/bin/python3 def pop(q): if len(q): return q.pop(0) else: return -1 def size(q): return len(q) def empty(q): if len(q): return 0 else: return 1 def front(q): if len(q): return q[0] else: return -1 def back(q): if len(q): return q[..
[BaekJoon] - 10828 스택
[BaekJoon] - 10828 스택
2019.10.1210828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net #!/bin/python3 def top(stack): if len(stack): return stack[::-1][0] else: return -1 def size(stack): return len(stack) def empty(stack): if len(stack) == 0: return 1 else: return 0 def pop(stack): if len(stack): return stack.pop() ..
[BaekJoon] 1158번 조세퍼스 문제
[BaekJoon] 1158번 조세퍼스 문제
2019.10.101158번: 조세퍼스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 2개의 언어(python, c)로 위 문제를 풀었다. python은 그냥 slicing으로 문제를 풀었다. #!/bin/python3 # poc.py def play(node, person, rule): result = list() while person > 0: result.append(node[(rule-1)%len(node)]) node = node[node.index(result[::-1][0])+1:] + node[:node.index(result[::-1][0])] person -= 1 print("") if __name__ == "__mai..
[BaekJoon] - 1004번 어린왕자
[BaekJoon] - 1004번 어린왕자
2019.10.051004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주어지며, 세 번째 줄부터 n줄에 걸쳐 행성계의 중점과 반지름 (cx, cy, r)이 주어진다. 입력제한은 다음과 같다. (-1000 ≤ x1, y1, x2, y2, cx, cy ≤ 1000, 1 ≤ r ≤ 1000, 1 ≤ n ≤ 50) 좌표와 반지름 www.acmicpc.net 근무 하면서 푼 문제이다. 고민하다가 후임이 좋은 풀이법을 알려주었다. 출발점과 도착점이 주워지고, 행성의 개수가 7개라 하면 아래 표 처럼 만들 수 있다. 원은 (x-x1)**2 + (y-y1)**2..