본문 바로가기

구현20

[삼성 SW 역량테스트 기출] 메이즈 러너 # M명의 참가자가 미로 탈출하기 게임에 참가# 미로는 N×N 크기의 격자# # 1초마다 모든 참가자는 한 칸씩 움직입니다.# 두 위치 (x1,y1), (x2,y2)의 최단거리는 ∣x1−x2∣+∣y1−y2∣로 정의# 모든 참가자는 동시에 움직입니다.# 상하좌우로 움직일 수 있으며, 벽이 없는 곳으로 이동할 수 있습니다.# 움직인 칸은 현재 머물러 있던 칸보다 출구까지의 최단 거리가 가까워야 합니다.# 움직일 수 있는 칸이 2개 이상이라면, 상하로 움직이는 것을 우선시합니다.# 참가가가 움직일 수 없는 상황이라면, 움직이지 않습니다.# 한 칸에 2명 이상의 참가자가 있을 수 있습니다.# # 모든 참가자가 이동을 끝냈으면, 다음 조건에 의해 미로가 회전합니다.# 한 명 이상의 참가자와 출구를 포함한 가장 .. 2024. 10. 12.
[백준 21611번] 마법사 상어와 블리자드 https://www.acmicpc.net/problem/21611import sysfrom collections import dequeinput = sys.stdin.readline# 가장 처음에 상어가 있는 칸을 제외한 나머지 칸에는 구슬이 하나 들어갈 수 있다# 구슬은 1번 구슬, 2번 구슬, 3번 구슬이 있다# 같은 번호를 가진 구슬이 번호가 연속하는 칸에 있으면, 그 구슬을 연속하는 구슬이라고 한다.# 블리자드 마법을 시전하려면 방향 di와 거리 si를 정해야 한다. # 총 4가지 방향 ↑, ↓, ←, → (1, 2, 3, 4)# 마법사 상어는 블리자드를 총 M번 시전# 시전한 마법의 정보가 주어졌을 때# 출력 : 폭발한 1번 구슬의 개수, 폭발한 2번 구슬의 개수, 폭발한 3번 구슬의 개수N,.. 2024. 10. 5.
[백준 21609번] 상어 중학교 https://www.acmicpc.net/problem/21609# 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록이 있다.# 일반 블록은 M가지 색상이 있고, 색은 M이하의 자연수로 표현# 검은색 블록은 -1, 무지개 블록은 0으로 표현# 블록 그룹은 연결된 블록의 집합이다. 그룹에는 일반 블록이 적어도 하나 있어야 하며, 일반 블록의 색은 모두 같아야 한다. # 검은색 블록은 포함되면 안 되고, 무지개 블록은 얼마나 들어있든 상관없다. # 그룹에 속한 블록의 개수는 2보다 크거나 같아야 하며, 임의의 한 블록에서 그룹에 속한 인접한 칸으로 이동해서 그룹에 속한 다른 모든 칸으로 이동할 수 있어야 한다.# 블록 그룹의 기준 블록은 무지개 블록이 아닌 .. 2024. 10. 1.
[소프티어 6255번] 플레이페어 암호 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai import sysfrom collections import dequeinput = sys.stdin.readline# 플레이페어 암호는 알파벳으로 이루어진 어떤 문자열을 암호화하는 방법# 알파벳으로 이루어진 문자열인 Key가 필요함# 한번에 두 글자 단위로 암호화를 진행# 5x5 크기의 표를 사용, 알파벳 26개를 모두 담기에는 칸이 1개 부족하여 I와 J를 동일하게 생각(편의상 J가 아예 X)area = [['']* 5 for _ in range(5)]alpa = [chr(x) for x in range(ord('A'),ord('Z')+1) if x != ord('J')]alpa_set = set()message = deque(li.. 2024. 6. 24.
[백준 1388번] 바닥 장식 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나 www.acmicpc.net n, m = map(int,input().split()) area = [list(input()) for _ in range(n)] # 바닥 visited = [[False]*m for _ in range(n)] # 방문(카운팅)여부 answer = 0 for i in range(n): for j in range(m): # 모든 나무의 영역을 방문 if visited[i][j]: # 이미 방문(카운팅)한 나무라면 Pass continue visited[i][j] = Tr.. 2024. 3. 4.
[백준 17140번] 이차원 배열과 연산 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net r,c,k = map(int,input().split()) arr = [list(map(int,input().split())) for _ in range(3)] answer = 0 def transpose(arr): return list(zip(*arr)) def calculate_row(index): row = arr[index] temp_dict = dict() sorted_row = [] for i in row: if i == 0: continu.. 2023. 9. 19.