구현 13

[Softeer] 교차로, C++

Softeer 자율주행차가 아래와 같은 교차로를 통과하는 상황을 생각하여 보자. 이 문제에서 다루는 교차로에서는 직진만 가능하기 때문에, 아래 그림과 같은 네 가지 방법으로만 교차로 softeer.ai 문제 요약 자동차별로 교차로를 통과하는 시간 출력하기 우측 도로에 자동차가 없어야 통과할수 있음 접근 1. 머리에 생각나는 대로 알고리즘 작성 A~D까지 도로 Queue 생성, 입력에 대해서 도로별로 시간을 push 출력을 위해 queue도 생성 Time(t) = 0 부터 시작해서 매 초 각 도로 확인 A~D 도로의 첫번째 차가 도착한 시간 확인. 차 시간이 현재 시간보다 작거나 같은 경우 오른쪽에 차가 없으면 체크 나머지 경우 패스(현재시간보다 크거나, 작거나 같지만 오른쪽에 차가 있는 경우) 네 도로 ..

STUDY/Algorithm 2022.09.05

[백준] 7682 틱택토 python

https://www.acmicpc.net/problem/7682 7682번: 틱택토 틱택토 게임은 두 명의 사람이 번갈아가며 말을 놓는 게임이다. 게임판은 3×3 격자판이며, 처음에는 비어 있다. 두 사람은 각각 X 또는 O 말을 번갈아가며 놓는데, 반드시 첫 번째 사람이 X를 놓고 www.acmicpc.net 구현문제이다. # import sys; input = sys.stdin.readline def check_line(string, player): ret = False if player == string[0] == string[1] == string[2]\ or player == string[3] == string[4] == string[5]\ or player == string[6] == str..

STUDY/Algorithm 2022.04.08

[백준] 21608 상어 초등학교 C++

https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 구현문제여서 알고리즘 설명은 스킵. #include #include using namespace std; typedef struct Seat { int num; // student number int adj[4]; // u l r d int adj_student; // number of adjacent student } SEAT; SEAT arr[20][20]; int like[401]..

STUDY/Algorithm 2022.04.04

[백준] 20056 마법사 상어와 파이어볼 Python

https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 시뮬레이션 문제이다. 알고리즘 순서는 다음과 같다. 1. 입력 1-1. board: 격자 정보, fireballs: 파이어볼 정보 1-2. 0

STUDY/Algorithm 2022.03.31

[백준] 23299 주사위 굴리기 2 Python

https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net 그래프탐색이 가미된 시뮬레이션 문제이고, 알고리즘 순서는 다음과 같다. 1. 입력 2. 시뮬레이션 (k번) 2-1. 주사위 이동 2-2. 점수 획득: 그래프 탐색 2-3. 다음 이동방향 결정 3. 출력 주사위 이동을 할때 주사위의 위치를 변경하면서 주사위 면도 변경했다. 주사위의 첫 면이 1 2 3 4 5 6 이라 하고 top이 1 bottom이 6이라고 할때 동쪽으로 굴러가면 ..

STUDY/Algorithm 2022.03.30

[백준] 20058 마법사 상어와 파이어스톰 python

https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 구현문제라 주어진대로 풀면된다. 격자마다 모두 회전한 배열을 만들고 붙여넣는 방식으로 구현했다. # import sys; input = sys.stdin.readline from collections import deque d = [(-1, 0), (0, 1), (1, 0), (0, -1)] def find_answer(arr, size): real_size = 2 ** siz..

STUDY/Algorithm 2022.03.28

[백준] 17140 이차원 배열과 연산 python

https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 시뮬레이션 문제이다. 매 단계마다 arr[R][C] == K인지 확인했고 다른 경우 정렬 연산을 하도록 구현했다. 정렬 연산은 다음과 같이 진행된다. 1. defaultdict로 수를 카운트한다.(등장횟수) 2. 수의 등장횟수와 숫자의 크기를 기준으로 오름차순으로 정렬 3. 행 or 열 갱신 3-1. 짝수 자리엔 수와 홀수 자리에 등장횟수를 넣어서 최대 100개까지 갱신한다.(0부터 ..

STUDY/Algorithm 2022.03.25

[백준] 17135 캐슬디펜스 python

https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 그래프 탐색이 가미된 브루트포스 문제이고 거기에 시뮬레이션까지 덤으로 꽉꽉 담아준다.(궁수 세명을 배치하는 게 브루트포스, 매 턴 확인하는 시뮬레이션, 턴마다 궁수가 죽이는 적을 찾는 게 그래프 탐색이다.) 궁수의 배치 조합을 백트래킹이나 반복문으로 직접 만들수 있긴 하지만 더빠른 itertools.combinations를 사용했다. 궁수의 배치가 끝나면 턴을 진행했다. 매 턴마다 한칸씩 아래로 내려가게 되..

STUDY/Algorithm 2022.03.24

[SWEA] 5650 핀볼 게임

SW Expert Academy 5650. [모의 SW 역량테스트] 핀볼 게임 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 구현, 시뮬레이션 문제이고 딱 삼성 기출같은 문제였다. 문제 자체는 어렵진 않았고 꽤 복잡했다. 입력을 받고 모든 점마다 시뮬레이션을 돌린뒤 가장 점수가 높은 것을 출력하면 되었는데 시뮬레이션 돌릴때 꽤 애를 먹었다. 시뮬레이션 돌릴땐 블록이 아닌 모든 점에 대해서 진행했는데 최대한 중복되는 점들을 제거 하려고 노력했다. 예를 들면 시작하자마자 벽을 만나는 경우를 제거했고(이 부분은 1점을 줘야했는지 고민하긴했다.), 진행 방향의 다음 점이 빈 곳이면 중복이 되므로 제거했다. 조건이 되..

STUDY/Algorithm 2022.03.16

[백준] 14890 경사로 python

https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 구현 문제여서 그냥 풀기만 하면된다.(사람마다 풀이가 다 다를듯...) # import sys; input = sys.stdin.readline def check(): global N, L, _map ret = 0 for r in range(N): h = _map[r][0] cnt = 1 for c in range(1, N): if h == _map[r][c]: cnt += 1 h = _map[r][c] continue..

STUDY/Algorithm 2022.03.15