Today Sangmin Learned
[Python] BOJ(백준) 2589번 - 보물섬
CS/알고리즘 2022. 2. 2. 00:01

링크 https://www.acmicpc.net/problem/2589 난이도(solved.ac 참고) 골드5 풀이 n과 m이 각각 50까지밖에 안되는 것을 보고 브루트포스로 해도 되겠다는 생각이 들었다. 우선 아이디어는 각 위치별로 가장 먼 곳까지 가는 숫자를 찾아야 하기 때문에 L일 때마다 BFS를 실행하고 이중 배열을 초기화하여 최대값을 갱신해가는 것인데, 일반적인 BFS로만 풀면 PyPy3으로만 통과할 수 있다. 코드에도 있듯이, 좌우 혹은 상하가 모두 L이라면 그 자리는 가장자리가 아니기 때문에 탐색을 넘김으로써 불필요한 배열 재선언 및 BFS의 실행을 방지할 수 있다.

[Python] BOJ(백준) 15591번 - MooTube (Silver)
CS/알고리즘 2022. 1. 28. 13:11

링크 https://www.acmicpc.net/problem/15591 난이도(solved.ac 참고) 골드5 풀이 BFS 문제이다. 그래프 탐색 문제를 너무 오랜만에 풀어서 갈피를 못잡았다. 인접 그래프 먼저 만들어주고, 노드 방문 여부를 확인하기 위해 visited 배열을 선언해줬으며, 큐에 처음으로 들어갈 값에는 유사도가 존재하지 않으므로 갱신해주기 위해 float('inf')를 넣었다. pop한 값을 기준으로 그래프의 인접 값을 탐색하면서 유사도를 더 낮은 값으로 갱신해주며, 그 갱신한 유사도가 K보다 클 경우에는 큐에 (새로운 노드, 새로운 유사도)를 넣어주고, 방문 처리한다음 갯수에 해당하는 result의 값을 1 더해준다.

[React] 테스팅(2) React Testing Library, Jest
Web/React 2022. 1. 20. 11:41

어제 포스팅에 이어서 여러 조건에 대한 테스팅을 추가로 포스팅해보려고 한다. 볼 것은 상태 변경 시 바뀌는 렌더링 값에 대한 테스팅, HTTP 요청 전송 시 렌더링 여부에 대한 테스팅이다. 1. src/components/Greeting.js import { useState } from "react"; const Greeting = () => { const [changedText, setChangedText] = useState(false); const changeTextHandler = () => { setChangedText(true); }; return ( Hello World! {!changedText && 만나서 반가워요!} {changedText && 이렇게 바뀌었어요!} Change Text..

article thumbnail
[React] 테스팅
Web/React 2022. 1. 19. 20:49

React: 자동화 테스트의 종류 기본적으로 수동으로 테스트하며, 이후에 자동화 테스트를 진행한다. 1. 단위 테스트(Unit Tests) - 앱의 가장 작은 가능한 단위(앱 내 개별 함수들)를 위해 테스트를 짜는 것 - 한 프로젝트에는 많은 개수의 단위 테스트가 포함됨 - 가장 공통적이며 중요한 테스트 2. 통합 테스트(Integration Tests) - 다수의 구성 요소 조합을 테스트함(다수의 컴포넌트가 함께 작동할 때) - 단위 테스트보다 수가 적음 3. 종단 간 테스트(End-to-End Tests: E2E Tests) - 앱을 하나의 완전체로 보고 테스트 하는 것 중요한 질문: 무엇을 테스트 할 것인가?, 어떻게 테스트 할 것인가? -> 테스트 코드에 어떤 종류의 코드를 넣을 것인가? 테스트또..

[Python] BOJ(백준) 15655번 - N과 M(6)
CS/알고리즘 2022. 1. 15. 20:16

링크 https://www.acmicpc.net/problem/15655 난이도(solved.ac 참고) 실버3 풀이 s에 숫자 하나씩을 넣은 뒤 그 길이가 m이 된다면 우선 result에 넣는다. result라는 배열을 하나 더 만든 이유는 숫자의 순서만 바뀌었을 경우에는 중복으로 들어갈 수 없다는 점을 고려해야 했기 때문이다. (1 7이 들어간 후 7 1이 들어가지 못하게 하기 위함) 기본적인 백트래킹 문제였다. 이전에는 N과 M 시리즈를 전부 순열, 조합, 중복순열, 중복조합으로 풀었다가 정도가 아님을 체감하고 백트래킹으로 다시 풀었다.

article thumbnail
[Redux] @reduxjs/toolkit의 사용방법
Web/Redux 2022. 1. 12. 17:24

기본적인 Redux 사용방법에 대해서 알아봤다. 이제 이 Redux를 좀 더 편하게, 그리고 가볍게 사용할 수 있는 @reduxjs-toolkit 패키지에 대해 알아보고자 한다. 1. 다운로드 npm install @reduxjs/toolkit yarn add @reduxjs/toolkit 둘 중에 편한 것으로 하자. 그리고 기존에 Redux가 설치되어있는 프로젝트라면 package.json에 들어가서 Redux를 삭제하자. 왜냐면 @reduxjs-toolkit에는 Redux의 모든 게 다 들어가 있기 때문이다. 2. 적용 이제 필요한 곳에 사용해보자. 여기서는 createSlice와 configureStore을 사용할 것이다. 예시는 마찬가지로 counter이다. 이 gif를 보면 증가, 5만큼 증가,..

article thumbnail
[Redux] Redux의 기본 흐름
Web/Redux 2022. 1. 12. 14:44

이번에는 Context API의 대안으로 떠올랐던 Redux의 기본 흐름에 대해서 살펴보려고 한다. 가장 쉬운 예시인 숫자 증가/감소로 설명하겠다. 1) Redux를 불러온다. const redux = require('redux') 2) 스토어를 만든다. const store = redux.createStore(""리듀서 이름"") 리덕스 라이브러리에 노출되는 방법이다. 파라미터로 리듀서가 들어가는데, 이는 어떤 리듀서가 스토어를 바꾸는지 스토어가 알아야 하기 때문이다. 3) 스토어에 들어갈 리듀서 함수를 작성한다. // 1 const counterReducer = (state = { counter: 0 }, action) => { // ... } // 2 const initialState = { cou..

[Python] BOJ(백준) 13702번 - 이상한 술집
CS/알고리즘 2022. 1. 12. 11:09

링크 https://www.acmicpc.net/problem/13702 난이도(solved.ac 참고) 실버3 풀이 이분탐색 문제인데, 매번 루프를 돌 때마다 해당 mid 값으로 몇 명을 줄 수 있는지를 계산한 뒤(10행) 그 값이 사람 수(K)보다 작다면 점점 용량을 줄이며 반대로 사람 수보다 크거나 같을 경우에는 result값에 그 용량을 대입한 뒤 점점 용량을 키워가는 방식으로 진행한다.

[Python] BOJ(백준) 2164번 - 카드2
CS/알고리즘 2022. 1. 9. 13:41

링크 https://www.acmicpc.net/problem/2164 난이도(solved.ac 참고) 실버4 풀이 간단한 큐 문제이다. 문제에서 하라는 대로 q.pop() 해서 제일 위 값을 빼내고, 다시 한 번 제일 위의 값을 빼낸 다음 제일 아래로 넣는 과정만 반복한 다음 길이가 1이 되면 끝내고 그 수를 출력한다. 알고리즘을 한 달이 넘도록 풀지 않아서 다시 시작하려니 실력이 많이 죽었다. 다시 시작ㅜㅜ

article thumbnail
[Vercel] Next.js 프로젝트 배포 후 push마다 auto check가 되지 않는 문제 해결
Web/Next.js 2022. 1. 4. 12:40

어제 프로젝트를 생성하여 Vercel에 push를 했다. (nextjs-meetup-for-deployment.vercel.app) 근데 아래 사진과 같이 첫 커밋만 Vercel에서 check 후 배포가 되었고 그 이후 디버깅 과정은 배포가 되지 않는 문제가 생겼다. 혹시 비슷한 문제를 겪고 있는 분이 있지 않을까 싶어서 글을 작성한다. GitHub은 오래전부터 써왔던지라 이전에 했던 기억이 있어서 따로 user 및 password 설정을 해두지 않았었는데, 이 부분이 문제였다. GitHub 우측 상단 클릭 후 Settings에 들어가면 아래와 같은 프로필이 나타난다. git config --global user.name "steadily-worked" git config --global user.ema..