전체 글 103

[React] redux 정리

기존 RN 프로젝트를 Refactoring 하기 위해 Redux를 공부했습니다. 하지만 아쉽게도 팀 내부 회의 후 Redux 대신 MobX를 도입하기로 결정해서 Redux로 Refactoring을 진행하지는 못했지만, Redux를 공부한 내용을 간단히 정리하려 합니다. (MobX는 추가적으로 더 공부한 후 정리하려 합니다😁) ※해당 게시글은 Redux에 대해 자세한 설명보다는 각 용어나 개념에 대한 짧은 정리 수준의 내용으로 이뤄져 있습니다. 조금 더 깊고 많은 내용을 원하시는 분은 참고 자료에 있는 게시글 들을 보시는 것도 좋을 거 같습니다. Redux란? 점유율이 가장 높은 상태 관리 라이브러리로, 글로벌 상태 관리를 쉽게 할 수 있도록 도와준다. - container component와 presen..

Frontend/React 2021.09.03

[백준] 17825 - 주사위 웇놀이 (파이썬, Python)

https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 첫째 줄에 주사위에서 나올 수 10개가 순서대로 주어진다. www.acmicpc.net 이 문제는 백트래킹, 구현 문제입니다. 주사위를 굴려서 나올 10개의 숫자를 미리 알려주고, 말을 이동시켜 얻을 수 있는 최대 점수를 구하는 것이 이 문제의 목표입니다. 이 문제는 이름에도 윷놀이가 있듯이 윷놀이처럼 지름길이 있습니다. 지름길은 10, 20, 30 칸에서 출발을 해야 갈 수 있으며 이동 중간에 해당 칸들을 지나는 경우는 지름길로 갈 수 없습니다. 말은 해당 회차에서 주사위를 굴려 나온 수 만큼 진행방향으로 이동시킵니다. 다만, 이동시킬 칸에 이미 말이 존재하면 해당 말은 이동시킬 수 없습니다.(도착 칸은 제..

PS/Python 2021.08.31

[백준] 16234 - 인구 이동 (파이썬, Python)

https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 이 문제는 너비 우선 탐색(bfs) 문제입니다. 배열 안의 각 칸은 나라를 의미하며, 조건에 맞을 시 주변 국가와 국경을 개방하여 인구를 이동시킵니다. 인구 이동은 매일 진행되며, 이 문제의 목표는 인구 이동이 며칠 동안 발생하는지 구하는 것이다. 접근 방식 1. 날마다 연합국 정보를 초기화한다.(어떠한 연합국에든 속하는지/속하지 않는지 판단하는 정보를 저장) 2. 각 국가를 순회하..

PS/Python 2021.08.29

[Programmers] 표 편집 (파이썬, Python)

https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 해당 문제는 Programemrs의 2021 카카오 채용연계형 인턴십 문제집에 속해 있는 문제입니다. 문제에는 총 4가지의 명령어가 존재하며, 입력으로 주어진 명령어를 차례로 모두 수행한 후 남아 있는 행과 삭제된 행을 출력하는 것이 이 문제의 목표입니다. 해당 문제는 정확성 테스트와 효율성 테스트가 따로 진행되..

PS/Python 2021.08.29

[백준] 17610 - 양팔저울 (파이썬, Python)

https://www.acmicpc.net/problem/17610 17610번: 양팔저울 무게가 서로 다른 k개의 추와 빈 그릇이 있다. 모든 추의 무게는 정수이고, 그릇의 무게는 0으로 간주한다. 양팔저울을 한 번만 이용하여 원하는 무게의 물을 그릇에 담고자 한다. 주어진 모든 추 www.acmicpc.net 전체 코드 제출 언어: PyPy3 시간: 260ms import sys if __name__ == "__main__": k = int(sys.stdin.readline().strip()) weights = list(map(int, sys.stdin.readline().strip().split())) weights.sort() max_num = sum(weights) candidates = [ w..

PS/Python 2021.08.28

[Programmers] 거리두기 확인하기 (파이썬, Python)

https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 해당 문제는 Programmers의 2021 카카오 채용연계형 인턴십 문제집에 속해 있는 ..

PS/Python 2021.08.27

[백준] 17086 - 아기 상어 2 (파이썬, Python)

https://www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸의 개수가 한 개 이상인 입력만 주어진다. www.acmicpc.net 해당 문제는 너비 우선 탐색(bfs)으로 해결하는 문제입니다. 칸 마다 가장 가까운 상어와의 거리를 안전거리라 하며, 이 문제의 목표는 안전거리의 최댓값을 구하는 것입니다. 문제를 해결하기 위한 접근 방법은 두 가지가 있습니다. 방법 1) 빈 칸 마다 너비 우선 탐색을 통해 안전거리를 계산한 후 안전거리의 최댓값을 구한다. 방법 2) 상어의 위치에서 너비 우선 탐색을 ..

PS/Python 2021.08.27

[백준] 1707 - 이분 그래프 (파이썬, Python)

https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 www.acmicpc.net 전체 코드 제출 언어: PyPy3 시간: 1216ms from collections import deque import sys def bfs(adj_list): global adj_mat, type_arr que = deque([(v, 1) for v in adj_list]) while que: cv, ct = que.popleft() type_arr[cv] = ct adj_list ..

PS/Python 2021.08.26

[백준] 21608 - 상어 초등학교 (파이썬, Python)

https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 해당 문제는 구현 문제입니다. 문제의 목표는 규칙에 따라 학생 들의 자리를 배치하고, 학생의 만족도 총합을 계산하는 것입니다. 자리를 배치하는 규칙에 따르면 빈 자리 중 우선순위가 높은 자리는 아래의 순서로 결정됩니다. 주위에 좋아하는 학생 수 가 많음 > 주위에 빈 자리가 많음 > 행의 번호가 작음 > 열을 변호가 작음 따라서 빈 자리를 찾고, 위 우선순위대로 정렬한 후 가장 우선순위..

PS/Python 2021.08.25

[백준] 15683 - 감시 (파이썬, Python)

https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 해당 문제는 구현 문제입니다. 문제의 목표는 주어진 CCTV를 적절히 회전시켜서 사무실의 사각지대의 최소 크기를 구하는 것입니다. CCTV의 종류는 총 5가지로, 각 종류마다 한 번에 감시 할 수 있는 방향이 다릅니다 CCTV의 종류 마다 감시할 수 있는 방향을 정의하는 방법이 해당 문제에서 중요한 포인트인 거 같습니다. 저는 아래 처럼 정의를 했습니다. dx, dy = (0, 1, 0..

PS/Python 2021.08.25