문제 (Gold 1) https://www.acmicpc.net/problem/16639 16639번: 괄호 추가하기 3 첫째 줄에 수식의 길이 N(1 ≤ N ≤ 19)가 주어진다. 둘째 줄에는 수식이 주어진다. 수식에 포함된 정수는 모두 0보다 크거나 같고, 9보다 작거나 같다. 문자열은 정수로 시작하고, 연산자와 정수가 www.acmicpc.net 풀이 숫자와 연산자를 한번에 저장할 수 있는 Expression 클래스 생성 -> 숫자를 char로 한번에 저장했더니, 9 이상의 숫자는 제대로 작동하지 않음 ㅠㅠ 연산 리스트에서 숫자가 나오는 짝수 인덱스를 돌며 연산 수행 후, 남은 연산 리스트를 재귀 돌림 기저조건: 리스트에 원소 하나만 남아있을 때 ( == 숫자 하나가 남아있을 때 ) 짝수 idx( ..
문제 (Gold 4) https://www.acmicpc.net/problem/14466 14466번: 소가 길을 건너간 이유 6 첫 줄에 N, K, R이 주어진다. 다음 R줄에는 한 줄에 하나씩 길이 주어진다. 길은 상하좌우로 인접한 두 목초지를 잇고, r c r′ c′의 형태 (행, 열, 행, 열)로 주어진다. 각 수는 1 이상 N 이하이다. www.acmicpc.net 풀이 문제 해석 1. 일반 목초지 사이는 상하좌우 모두 움직일 수 있다. 2. 중간에 다리가 있다면, 다리를 꼭 건너야 한다. 즉, 소(2,2)는 소(2,3)까지 다리를 건너야할 수도 있지만, 그 길을 회피해 회색 화살표 길로 갈 수 있다. 소(3,3)은 다른 목초지에 가려면 무조건 다리를 건너야 하므로, 모든 소와 유효한 쌍이 된다..
상황 Service UnitTest 중 발생 원인 @Before 에서 실행되는 아래 Stubbing이 쓰이지 않은 메소드가 있었다. given(userRepository.findByEmail(userEmail)).willReturn(Optional.of(user)); 해결 @Before 어노테이션을 제거하고, 필요한 메소드에서 호출하는 방식으로 변경!
Unit Test ? 단위 테스트는 Service Layer의 비즈니스 로직만을 검증하는 것이므로, Repository와 Controller의 영향을 받지 않는 환경에서 테스트를 진행하여야 한다. 테스트의 F.I.R.S.T 원칙 F - Fast: 테스트를 시도하는 것에 있어서 주춤되지 않을 만큼 빨라야 한다. I - Independent: 객체의 상태, 메소드, 이전 테스트 상태, 다른 메소드의 결과에 의존해서는 안된다. R - Repeatable: 어떤 환경에서도 같은 결과가 나올 수 있도록 반복 가능해야 한다. S - Self-Validating: 모든 테스트는 pass 혹은 fail의 결과만 가지고 있어야 한다. T - Timely: 실제 코드가 만들어지기 전에 테스트 되어야 한다. 실제 코드를 구..
문제 (GOLD 2) https://www.acmicpc.net/problem/18500 18500번: 미네랄 2 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄 www.acmicpc.net 풀이 시뮬레이션은 문제를 천천히 보면서 하나하나 구현하는게 가장 중요한 것 같다. Logic 높이 입력 받기 던지는 위치에 따라 분기 없어질 미네랄 위치 찾기 없어질 미네랄을 중심으로 오른쪽 공격이면 상, 하, 좌 왼쪽 공격이면 상, 하, 우 탐색하며, 떨어질 클러스터가 있는지 확인 ( breakMineral() ) BFS 돌며, 바닥과 맞닿아 있는 곳이 있는지 확인 있으면 fals..
[ 문제 ] 타이머를 적용하는 setInterval이 간헐적으로 실행되지 않음 새로운 window를 열었을 때, background.js가 재 실행되면서, tabId가 “”로 초기화 됨 setInterval Manifest V3로 이전 되면서, chrome alarms API로 변경 https://developer.chrome.com/docs/extensions/mv3/migrating_to_service_workers/#alarms chrome.alarms.create({ when:Date.now(), periodInMinutes: 1/60}); chrome.alarms.onAlarm.addListener(() => { // Do Action }); alarms 사용을 위해, Manifest에 Perm..