목록[IT] (125)
할껀하고놀자
아기상어 아기상어가 물고기를 먹으면서 움직이는 최단거리를 구하는 문제이다. 여러가지 조건이 까다로운 문제이다. 아기상어는 자신보다 크거나, 같은 크기를 가진 물고기를 먹을 수 없다. 아기상어는 상어에게 가장 가까이 있는 물고기를 우선순위로 먹어야 한다. 여러마리의 물고기가 같은 거리에 존재하는 경우가 있다. 이 경우 동일한 거리중 가장 위쪽에 있는 물고기를 우선으로 먹는다. 동일한 높이에 있을 경우, 왼쪽을 우선으로 먹는다. 이 세가지 조건을 만족하면서 bfs탐색을 하기 위해서는, 최소 힙(min-heap)이 구현된 우선순위 큐를 사용하면 된다. 상어의 크기를 나타내는 변수를 설정한다. Ex) shark_size 물고기를 먹은 횟수를 나타내는 변수를 설정한다. Ex) shark_eat bfs에서 사용할 ..
조건 파란 구슬이 구멍에 빠져서는 안된다. 파란 구슬과 빨간 구슬이 동시에 빠져서도 안된다. 빨간 구슬과 파란 구슬이 동시에 움직이고, 굴리면 벽에 부딪힐 때까지 굴러간다. 구슬 2개가 동시에 움직이기 떄문에, 4차원 배열을 통해 방문 여부를 체킹해주면 편하다. 구동 순서 초기화 진행한다. q에 빨간 구슬의 (x,y)좌표와 파랑구슬의 (x,y) 좌표가 전부 들어간다. 방문 여부를 확인할 check 배열을 4차원 배열로 표현해준다. 배열의 인덱스는 빨간x 빨간y 파랑x 파랑y 이다. 구슬을 상하좌우로 굴려본다. 구슬을 굴릴 때, 구슬의 다음 위치가 벽인지, 구슬의 현재 위치가 구멍인지 확인한다. 구슬의 다음위치가 벽이라면, 앞으로 가지 못한다. 구슬의 현재 위치가 구멍이라면, 현재 구슬의 색이 무슨 색인지..
ctrl + , 으로 설정 창 먼저 띄워준다. 검색창에 `terminal.integrated.shell.windows` 입력 .json 에 이거 붙여넣고 껏다 키면 됨. { "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe" }
완전탐색에 관한 공부를 진행하면서 풀이한 문제입니다. 종만북에서는 재귀를 공부했는데 풀이는 while로 풀었습니다;; ['1','2','3'] -> [1,2,3] 으로 바꾸는 마법코드를 배울 수 있었습니다. li = list(map(int,li)) 맵으로 한번 int 처리해주고 다시 list 화 시키면 되는 것 같습니다. sum(li) 라는 고마운 함수를 이용하여 li 내부값을 모두 더해주고, 이것으로 답과 비교합니다. 아무것도 담기지 않았을 때 0을 반환해주었고, 그 이외에는 ans 에서 가장 작은 요소를 반환해주었습니다. n = int(input()) ans = [] def solution(n): value = n while n!=0: li = list(str(n)) li = list(map(int,..
import sys sys.stdin = open('1.txt') r="" num = int(input()) for _ in range(num): r += input().lower()+'\n' print(r) 다른 사람 풀이 import sys n = int(sys.stdin.readline()) for _ in range(n): s = sys.stdin.readline().rstrip() print(s.lower())
num1 = int(input()) operator = input() num2 = int(input()) if operator=='*': print(num1*num2) else: print(num1+num2) print(eval(input()+input()+input())) 다른사람 풀이
import sys sys.stdin = open('1.txt') n = int(input()) for i in range(n): li = input().split(' ') flag = False if li[1]=='*': tmp = int(li[0])*int(li[2]) if tmp == int(''.join(li[-1:])): flag=True elif li[1]=='+': tmp = int(li[0])+int(li[2]) if tmp == int(''.join(li[-1:])): flag=True elif li[1]=='-': tmp = int(li[0])-int(li[2]) if tmp == int(''.join(li[-1:])): flag=True elif li[1]=='/': tmp = int..
- 파이썬의 factorial library 를 쓰면 빠르게 풀 수 있다. import math,sys sys.stdin = open('1.txt') k = int(input()) for i in range(k): r,n = map(int, input().split()) print(math.factorial(n)//(math.factorial(n-r)*math.factorial(r)))
C++ code #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); long s; cin >> s; deque list; while (s != 1) { list.push_front(s % 2); s /= 2; } list.push_front(1); deque new_list = list; for (int i = 0; i