여니의 취준 준비/코딩테스트 (Python) 193

[Python] n1212번 | 8진수 2진수

# n = int(input()) # array = [] # # while n > 1: # result = n % 2 # n = n // 2 # array.append(result) # array.append(1) # # index = len(array) # for i in range(index - 1, -1, -1): # print(array[i],end='') 처음에 파이썬 내에 진수변환해주는 내장함수의 존재는 새까맣게 잊은채,, 빡구현을 시전한 과거의 나 자신,, 반성해 반성해 ㅠㅠ 8진수 입력 받아놓고 10진수로 계산함,, 바부 ㅠㅠ 학교 전공수업 때 배웠었는데, 그새 까먹어서 다시 복습 ^0^ # 다른 진수 -> 10진수로 변환 b=int('0b1010',2) o=int('0o12',8) h=i..

[Python] n19236번 | 청소년 상어

격자 크기 : 4 위치 : X,Y 한 칸에는 물고기 1마리 물고기 (번호,방향) >> 1쪽에 있는 물고기로만 이동이 가능. - 물고기 있는 칸으로 이동 : 물고기 먹고, 물고기 방향 GET - 이동할 수 없는 칸 : 물고기가 없는 칸 - 만약 이동할 수 없는 상태이면? 공간에서 벗어나 집으로 간다. 상어가 이동한 후에는 다시 물고기가 이동하며 이 과정이 반복 >> 상어가 먹을 수 있는 물고기 번호의 합의 최댓값을 구하라. DFS와 백트래킹의 차이점 DFS : 모든 경우의 수를 전부 확인하는 알고리즘이다. 백트래킹 : 모든 경우의 수를 확인하지 않는다. 스택에 자식노드를 넣기 전에 유망한지 확인 후 스택에 넣는다. 왜 이 문제가 DFS문제인가? > 모든 노드를 검사해서, 값을 구해야하기 때문이다. 왜 이 ..

[Python] n19237번 | 어른 상어

문제 출처 : www.acmicpc.net/problem/19237 상어 번호 : 1~M이하의 자연수 번호, 랜덤 (단, 모든 번호는 다르다) 가장 강력한 상어 : 1의 번호를 가진 상어 격자 크기 : N X N 상어가 들어있는 칸의 개수 : M 1단계 (이동) - 모든 상어가 자신의 위치에 자신의 냄새를 뿌린다. - 그 후 1초마다 모든 상어가 동시에 상하좌우로 인접한 칸 중 하나로 이동하고, 자신의 냄새를 그 칸에 뿌린다. (냄새는 상어가 K번 이동하고 나면 사라진다) 이동 방향 결정 방법 1순위 ) 인접한 칸 중 아무 냄새가 없는 칸의 방향을 잡는다 2순위 ) 그런 칸이 없으면 자신의 냄새가 있는 칸의 방향으로 잡는다. (이때 가능한 칸이 여러개 일 수 있는데, 이땐 특정한 우선순위를 따라야 한다...

[Python] n20055번 | 컨베이어 벨트 위의 로봇

컨베이어 벨트 길이 : N 컨베이어 벨트 위아래 총 길이 : 2N 벨트 간격 : 1 벨트 칸 수 : 2N개 반드시 로봇은 올라가는 위치(1)에서만 올라가고, 내려가는 위치(N)에서만 내려갈 수 있다. 내려가는 위치에 있는 로봇의 경우 반드시 땅으로 내려가야 한다. 칸에 올라가거나 이동하면, 그 칸의 내구도는 즉시 1만큼 감소한다. 내구도가 0인 칸에는 로봇 올라갈 수 없다. > 이 글의 목적 : 컨베이어 벨트를 이용해 로봇들을 건너편으로 옮기려고 한다. * 과정 * 1. 벨트가 한 칸 회전한다. 2. 가장 먼저 벨트가 올라간 로봇부터 회전하는 방향으로 이동이 가능하면, 이동한다. 이동할 수 없다면 가만히 있는다. (이동하려면 이동하려는 칸에 로봇이 없어야 하며, 그 칸의 내구도가 1이상 남아있어야 한다)..

[Python] n20056번 | 마법사 상어와 파이어볼

* 주어진 조건 * 격자 크기 : N X N 파이어볼 : M개 질량 : m 방향 : d 속력 : s 위치 : (r,c) r은 행, c는 열 파이어볼의 방향 격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다. => 이 문구를 이해하는 데 꽤나 시간이 오래 걸렸..다.. 바보인가부다.. 1번 행에서 격자 밖인 0번 행으로 넘어갈 경우에는 격자 밖을 벗어나는 게 아니라 N번 행으로 넘어간다는 뜻이다. 순환시스템이라고 보면 되려나..? ㅎ..ㅎ * 과정 * 1. 모든 파이어볼이 자신의 방향 d로 속력 s칸 만큼 이동한다 2. 이동이 모두 끝난 뒤, 2개 이상의 파이어볼이 존재하는 칸에서는 다음과 같은 일이 일어난다. 1) 같은 칸에 있..

[Python] n20057번) 마법사 상어와 토네이도

맵 크기 : N X N 모래 양 : A[r][c] 토네이도 시전 시, 가운데 칸 부터 이동이 시작된다. 토네이도는 1번에 1칸 씩 이동한다. X->Y로 이동할 시,Y의 모든 모래가 비율이 적혀있는 칸과 a로 이동한다. 비율은 y에 있는 모래의 해당 비율만큼으로 소수점 아래는 버린다. a로 이동하는 모래양은 비율이 적혀있는 칸으로 이동하지 않은 남은 모래의 양이다. 모래가 이미 있는 칸으로 이동하면?모래의 양은 더해지게 된다. 토네이도는 (1,1)까지 이동한 뒤 소멸한다.모래가 격자 밖으로 이동할 수도 있다.토네이도 소멸 시 격자 밖으로 나간 모래양을 구해보는 것이 이 문제의 핵심 **제한** 3 ≤ N ≤ 499 N은 홀수 0 ≤ A[r][c] ≤ 1,000 가운데 칸에 있는 모래의 양은 0 단계 1) ..

[Python] n20058) 마법사 상어와 파이어스톰

이 문제는 회전(90도), 인접한 얼음구하기, BFS를 구현할 수 있어야 하는 문제이다. 맵 크기 : 2^N X 2^N 얼음의 양 : A[r][c] 단계 : L 파이어스톰 단계 1) 격자(2^N X 2^N)를 부분격자2^L X 2^L로 나눈다. 2) 모든 부분 격자들을 시계방향으로 90도 회전시킨다. 3) 얼음이 있는 칸 3개 또는 그 이상과 인접해있지 않은 칸은 얼음의 양이 1 줄어든다. 우리가 출력해야 하는 것은? 1) 남아 있는 얼음 A[r][c]의 합 2) 남아 있는 얼음 중 가장 큰 덩어리가 차지하는 칸의 개수 (단, 덩어리가 없으면 0을 출력) ** 제한 ** 2 ≤ N ≤ 6 1 ≤ Q ≤ 1,000 0 ≤ A[r][c] ≤ 100 0 ≤ Li ≤ N 단계 1) 회전 왼쪽 상단 -> 오른쪽 ..