전체 글 666

[백준] 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

[백준] 17609 회문 python

https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 회문 체크하는게 굉장히 오래걸렸다. 처음 시도는 슬라이싱으로 했으나 시간초과가 되어 인덱스로 접근하는 방식으로 했다. # import sys; input = sys.stdin.readline def check_palindrome(string, start=None, end=None): if start is None: start = 0 if end is None: end = len(string) - 1 cnt = 0 pre_idx..

STUDY/Algorithm 2022.04.07

[백준] 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

[백준] 17281 ⚾ C++

https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 브루트포스 문제이고 시뮬레이션 방식으로 풀었다. 알고리즘은 다음과 같다. 1. 입력 vector에 array를 추가하는 방식으로 이닝별 선수들의 행동을 저장했다. 2. 브루트포스 2-1. 1~9까지 순열 구하기(permutation) 2-2. 구한 순열로 시뮬레이션해서 점수 구하기 2-3. 최대 점수 갱신 1부터 9까지 숫자를 가지고 있는 배열(players_order)을 선언하고 algorithm 헤..

STUDY/Algorithm 2022.04.01

[백준] 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

[백준] 11559 Puyo Puyo, Python

https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net 그래프 탐색을 사용한 시뮬레이션 문제이다. 시뮬레이션 순서는 다음과 같다. 1. 이차원 배열에서 아래에서 부터 그래프 탐색으로 4칸 이상의 지점 찾기 -> 있으면 제거 2. 제거된 값이 있으면 중력 적용후 1,2 반복, 없으면 반복 중단 import sys; input = sys.stdin.readline from collections import deque d = [(0..

STUDY/Algorithm 2022.03.29

[백준] 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

네이밍 컨벤션 Naming Convention

코딩 컨벤션(Coding Convention)은 읽고, 관리하기 쉬운 코드를 작성하기 위한 일종의 코딩 스타일 규약이다. 쉽게 코드를 이해하고 사용할수 있게 규칙을 정해 가독성을 높이고, 유지보수 비용을 줄이기 위해 사용한다. Python 의 PEP-8 과 같이 언어 자체에서 자주 사용하는 컨벤션도 있고, Airbnb JavaScript Style Guide처럼 회사 자체에서 만든 컨벤션도 있다. 사용하는 언어나 회사에 따라 사용하는(선호하는) 컨벤션이 다르기 때문에 뭐가 더 좋다고 이야기할 순 없다. Naming Convention은 코딩 컨벤션 중 하나이다. 말 그대로 이름을 짓는 규칙이다. 변수나 함수를 만들 때 이름만 보고도 변수인지 함수인지 쉽게 파악하기 위해 사용한다. 알고리즘 문제를 풀 때는..

STUDY/Others 2022.03.25

[백준] 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