Coding Test103 [백준] 15683 - 감시 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 15683번: 감시 1. 문제 N*M 보드에서 빈 칸(0), CCTV(1~5), 벽(6) 존재한다. CCTV는 5개 존재한다. 1번 한 방향 2번 두 방향(반대) 3번 두 방향(직각) 4번 세 방향 5번 네 방향 CCTV는 CCTV를 통과할 수 있다. CCTV로 감시할 수 없는 사각 지대의 최소 크기를 출력한다. -> 최대 감시 구역 찾기 2. 풀이 브루트포스를 이용한 문제 풀이 CCTV가 가르킬 수 있는 모든 방향을 Dictionary에 저장한다. 초기 빈칸의 개수와 CCTV의 위치와 종류를 배열에 저장한다. CCTV가 감시하는 함수를 만든다. 감시는 상,하,좌,우 네 방향을 고려한다. CCTV가 감시할 때, 빈 칸이거나 CCTV라면 다음 칸으.. 2021. 11. 22. [백준] 14891 - 톱니바퀴 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 14891번: 톱니바퀴 1. 문제 톱니바퀴는 총 4개 존재한다. 톱니바퀴는 총 8개의 톱니를 가지고, 톱니는 N극과 S극 중 하나를 가진다. 톱니바퀴의 회전은 시계 방향(0)과 반시계 방향(1)이 있고 K번 회전한다. 특정 톱니바퀴가 회전할 때, 인접한 톱니는 극이 다르면 반대로 회전하고, 같으면 회전하지 않는다. 총 K번 회전시킨 이후에 네 톱니바퀴의 12시 방향을 통해 점수를 출력한다. 2. 풀이 시뮬레이션을 이용한 문제 풀이 톱니바퀴의 회전 함수를 구현한다. K번의 회전 마다 회전하는 톱니와 방향을 배열에 저장한다. 배열에 존재하는 톱니 회전한다. 3. 코드 T = [list(map(int, input().strip())) for _ in .. 2021. 11. 22. [백준] 14890 - 경사로 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 14890번: 경사로 1. 문제 크기가 N*N인 지도의 각 칸에는 높이가 적혀있다. 지도의 길은 N개의 행과 N개의 열로 총 2N개이다. 길을 지나기 위해서는 길에 속한 모든 칸의 높이가 같거나 경사로를 놓아야 한다. 경사로 조건은 다음과 같다. 경사로는 낮은 칸에 놓으며, L개의 연속된 칸에 경사로의 바닥이 모두 접해야 한다. 낮은 칸과 높은 칸의 높이 차이는 1이어야 한다. 경사로를 놓을 낮은 칸의 높이는 모두 같아야 하고, L개의 칸이 연속되어야 한다. 유효한 길의 개수를 출력한다. 2. 풀이 시뮬레이션을 이용한 문제 풀이 경사로는 반드시 1 -> 앞 뒤 차이가 2 이상이면 불가 길의 확인 방향은 계산하기 쉽게 행은 동쪽, 열은 남쪽 오르막.. 2021. 11. 22. [백준] 14889 - 스타트와 링크 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 14889번: 스타트와 링크 1. 문제 N명의 사람을 2/N명으로 이루어진 2개의 팀으로 나눈다. 능력치 Sij와 Sji 는 i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치이다. 두 팀의 총능력치 차이가 최소일 때 능력치 차이를 출력한다. 2. 풀이 브루트포스를 이용한 문제 풀이 True 와 False 2개의 팀으로 나눈다. 브루트포스를 통해 모든 선수가 True 팀일 경우와 False팀일 때를 구한다. True 팀이 2/N 이 되면 두 팀의 능력치 차이를 출력한다. 3. 코드 N = int(input()) S = [list(map(int, input().split())) for _ in range(N)] T = [False.. 2021. 11. 22. [백준] 14888 - 연산자 끼워넣기 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 14888번: 연산자 끼워넣기 1. 문제 N개의 수로 이루어진 배열과 수와 수 사이에 끼어넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 연산자는 수와 수 사이에 하나만 들어간다. 주어진 N개의 수와 N-1개의 연산자를 통해 구할 수 있는 최대값과 최솟값을 출력한다. 2. 풀이 브루트포스를 이용한 문제 풀이 연산자의 개수를 배열로 저장 브루트포스를 통해 주어진 수의 개수를 모두 사용하였을 때 최소 최대 값 저장 3. 코드 N = int(input()) A = list(map(int, input().split())) op = list(map(int, input().spli.. 2021. 11. 22. [백준] 14503 - 로봇 청소기 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 14503번: 로봇 청소기 1. 문제 로봇 청소기가 청소하는 영역 NxM이 주어지며, 각각의 칸은 벽(1) 또는 빈 칸(0)이다. 로봇 청소기는 다음과 같이 동작한다. 현재 위치를 청소한다. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다. 왼쪽 방향에 청소할 공간이 없다면, 그 방향으로 회전하고 2번으로 돌아간다. 네 방향 모두 청소가 이미 되어있거나 벽인 경우에는, 바라보는 방향을 유지한 채로 한 칸 후진을 하고 2번으로 돌아간다. 네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도.. 2021. 11. 22. [백준] 14502 - 연구소 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 14502번: 연구소 1. 문제 N*M 크기의 연구소는 빈 칸(0)과 벽(1) 그리고 바이러스(2)로 이루어져있다. 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 추가로 3개의 벽을 세워 바이러스가 가장 적게 퍼지게 한다. 안정 영역의 최댓값을 출력한다. -> 바이러스가 최소일 때를 구하는 문제 2. 풀이 브루트포스 와 DFS를 이용한 문제 풀이 바이러스의 최솟값을 구한다. 초기 빈 칸의 개수와 바이러스 위치를 저장 브루트포스를 통해 3개의 벽을 세울 수 있는 모든 경우를 고려한다. DFS를 통해 바이러스의 총 개수를 구한다. 안전 영역 = 총 빈칸 - 최소 바이러스 개수 - 벽의 개수(3) 3. 코드 N, M = map(int.. 2021. 11. 22. [백준] 14501 - 퇴사 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 14501번: 퇴사 1. 문제 상담 일정표는 상담 기간과 상담 금액으로 이루어져 있다. N일 동안 적절한 상담 조합을 통해 구할 수 있는 최대 금액을 출력한다. 2. 풀이 DP(Dynamic Programming)을 이용한 문제 풀이 크기가 N인 DP 배열 생성 당일 상담이 퇴사 전에 가능할 경우 상담 선택한다. 당일 이전에 상담이 끝나는 날 중 보상이 가장 큰 날의 보상을 당일 보상에 더한다. DP배열에서 가장 보상이 큰 날을 return 3. 코드 def solution(): N = int(input()) L = [list(map(int, input().split())) for _ in range(N)] dp = [0]*N # N일 동안 선택.. 2021. 11. 22. [백준] 14499 - 주사위 굴리기 [Python(파이썬)] '삼성 SW 역량 테스트' 기출 문제 입니다. 😀 문제 👉 14499번: 주사위 굴리기 1. 문제 크기가 N*M인 지도와 북쪽으로 r만큼, 서쪽으로 c만큼 떨어진 (r,c) 위치에 주사위가 존재한다. 지도의 각 칸에는 정수가 하나씩 쓰여져 있다. 초기 주사위는 모든 면이 0이다. 주사위를 굴렸을 때 지도의 바닥면 == 0: 지도의 바닥면 = 주사위의 바닥면 지도의 바닥면 != 0: 주사위의 바닥면 = 지도의 바닥면 주사위의 명령은 동쪽은 1, 서쪽은 2, 북쪽은 3, 남쪽은 4로 주어진다. 주사위를 이동할 때 마다 주사위의 윗 면에 쓰여진 수를 출력한다. 2. 풀이 시뮬레이션을 이용한 문제 풀이 주사위가 돌아가는 함수 구현한다. (손으로 그려보면서 하면 금방 할 수 있다. 머리로만 하지말자...) 3. .. 2021. 11. 22. 이전 1 ··· 8 9 10 11 12 다음