본문 바로가기

전체 글93

구현 문제 풀이 알고리즘 스터디 4주차 주제는 구현이었다. 기억에 남는 문제 위주로 풀이 내용을 정리한다. 백준 2174번 다수의 로봇들 (1≤N≤100) 이 존재하는 공간에서 각 로봇들에 명령을 내리고, 해당 명령을 문제 없이 수행할 수 있는지 파악하는 문제. 명령은 총 3가지인데, ‘로봇이 향하는 방향을 기준으로’ 왼쪽/오른쪽으로 90도 회전/앞으로 한 칸 움직이기이다. 따라서 각 로봇들의 위치 뿐 아니라, 로봇이 현재 향하고 있는 방향 또한 고려해야하는 문제였다. 로봇이 다수 존재하기 때문에, 입력받은 순서대로 로봇에 번호를 붙여 객체에 위치 및 방향을 저장해두고, 각 로봇의 정보에 접근하기 용이하게끔 하였다. 이후로는 순서대로 들어오는 명령을 처리하기만 하면 된다. const readline = require(".. 2023. 12. 4.
React Testing에 대하여 Udemy의 React - The Complete Guide 강의의 Section 27: Testing React Apps(Unit Tests)를 듣고 공부한 내용을 간략히 정리. Automating Testing (테스트 자동화) 테스트는 왜 해야할까? 개발자가 개발하는 도중, 수동으로 작동 등을 확인하는 것은 '수동 테스트(Manual Test)'이다. 다만, 테스트를 수작업으로 진행할 경우 가능한 모든 테스트 케이스(시나리오)를 테스트할 수 없기 때문에 예상치 못한 에러가 발생할 수 있다. 이에 반해, 자동화된 테스트는 모든 시나리오를 자동적으로 테스트할 수 있다. 개발자가 하나하나 손으로 하는 것보다 시간도 절약할 수 있다. 따라서 수동 테스트만 진행하는 것 보다, 자동 테스트를 같이 병행함으로.. 2023. 11. 22.
그래프 & DFS/BFS 문제 풀이 지난 게시물에서 그래프와 그래프 순회에 대한 강의를 듣고 내용을 정리하여 포스팅했었다. 이번에는 강의 내용을 활용하여 풀었던 문제들을 짧게 공유한다. 문제들은 대부분 백준 문제집의 DFS+BFS 필수 문제 에 속한 문제들이다. 백준 2178번 이차원 배열 형태의 미로를 탐색하며, 출발점부터 도착점까지의 최소 거리를 구하는 문제이다. BFS/DFS 문제를 제대로 푸는게 처음이라, 공부한 개념을 적용하기 조금 어려웠는데 다음과 같이 풀었다. BFS로, 시작점(0, 0)에서부터 순회를 시작한다. 미로는 길이 존재하고, 현재 접점과 인접한 사방의 접점으로만 진행할 수 있다. 따라서 순회 시 이를 전부 체크한다. 위의 조건을 만족하며 아직 방문하지 않은 인접점은 방문 처리 후 BFS 탐색 큐에 넣어줌으로써, 다.. 2023. 11. 19.
그래프 + 그래프 순회 정리 요즘 소소한 알고리즘 스터디를 하고 있다. 매주 주제를 정해서 하루에 하나씩 문제를 풀고 있는데, 이번주 주제가 DFS/BFS였다. DFS/BFS 공부를 할 겸, 그래프와 순회 강의를 들으며 정리한 것을 간략히 기록한다. 강의는 Udemy에 있는 JavaScript 알고리즘 & 자료구조 마스터클래스 이다. 그래프 (Graph) : 노드/점들의 집합으로 구성된 데이터 구조 → 간단히 말해, 노드와 노드 간의 연결(Connection)로 이루어진 구조이다 어디에 사용되나? 그래프는 다양한 곳에 사용된다. 밑의 리스트는 한 번쯤 주변에서 경험해봤을, 그래프의 사용처들이다. SNS: Facebook이나 인스타그램 등. 사용자 간의 팔로우 관계가 그래프로 나타난다. Location Mapping 각종 추천 시스.. 2023. 11. 17.
유클리드 호제법 백준의 정수론 문제를 살펴보다, 유클리드 호제법에 대해 알게 되었다. 어떤 것인지 간단하게 파악하고, 이를 이용해 문제를 푼 것에 대해 짤막히 기록한다. 유클리드 호제법 자연수 혹은 정수 사이의 최대공약수(Greatest Common Denominator: GCD)를 구하기 위한 알고리즘. a와 b의 최대공약수는, a / b의 나머지 r과 b의 최대공약수와 같다. 이를 실제 함수로 구현하면 재귀 혹은 반복을 통해 구현할 수 있다. 나는 아래와 같은 코드를 작성해 문제풀이에 활용하였다. const getGCD = (a, b) => { if (a === b) return a; if (a === 1 || b === 1) return 1; if (b === 0) return a; return getGCD(b, .. 2023. 10. 29.
Github 커밋 내역(잔디) 반영 안 되는 이슈 어느날 내 알고리즘 레포지터리의 이상한 점을 눈치챘다. 그것은 커밋을 했는데도 깃허브 잔디에 반영이 되지 않는다는 것. 나름 꾸준히 알고리즘 문제를 풀고 있음에도 커밋 내역이 반영되지 않는 것은 억울할 것만 같아 원인과 해결방법을 찾아보았다. 원인 대부분의 원인이 깃허브에 등록된 이메일/닉네임과 로컬의 이메일/닉네임이 달라서 생기는 이슈였다. 로컬의 깃 설정을 확인하는 방법은 터미널에서 아래의 명령어를 사용하는 것이다. git config --list 나의 경우 이메일은 괜찮았는데 닉네임이 깃허브와 달랐다. 추측컨대 맥에 등록된 이름으로 설정되어있었던 것 같다... 아마도. 따라서 로컬의 이름을 내 깃허브 닉네임으로 변경해주었다. 명령어는 아래와 같다. git config --global user.na.. 2023. 10. 25.