본문 바로가기

분류 전체보기

[리트코드(LeetCode)] 316. Remove Duplicate Letters - Python leetcode.com/problems/remove-duplicate-letters/ Remove Duplicate Letters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 를 학습하면서 수록된 코드를 참고하였습니다. - 풀이 단순해보이지만 어려워서 두고두고 충분히 습득될 때까지 여러 번 풀어봐야할 것 같은 문제. lexicographical order에 대해 먼저 알아야할 필요성이 있다. 번역하면 사전식 순서라는데 문자열의 단순한 오름차순과는 다르다..
[리트코드(LeetCode)] 92. Reverse Linked List II - Python leetcode.com/problems/reverse-linked-list-ii/submissions/ Reverse Linked List II - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 를 학습하면서 수록된 코드를 참고하였습니다. - 풀이 연결리스트는 순서에 대한 값을 가지고 있지 않아서 인덱스를 통한 탐색은 불가하다. 때문에 앞에서부터 m번째 노드, n번째 노드를 찾아내야 한다. 이 문제에서는 m ~ n번째 노드들에 한해서만 순서를 거꾸로 뒤집는다..
[리트코드(LeetCode)] 24. Swap Nodes in Paris - Python leetcode.com/problems/swap-nodes-in-pairs/ Swap Nodes in Pairs - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 를 학습하면서 수록된 코드를 참고하였습니다. - 풀이 인접한 두 노드 간의 값을 스왑하는 문제로 노드의 개수가 홀수인 경우 마지막 남는 한 개의 노드는 그대로 두는 것 같다. 가장 기본적인 방법으로는 노드에 있는 값만 바꾸는 방법이다. # 풀이 1. 값만 교환 def swapPairs_value(s..
[리트코드(LeetCode)] 238. Product or Array Except Self - Python leetcode.com/problems/product-of-array-except-self/ Product of Array Except Self - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 를 학습하면서 수록된 코드를 참고하였습니다. - 풀이 문제 제약 상 나눗셈을 사용할 수 없게되어 있었다. 현재 index의 왼쪽 원소들의 곱과 오른쪽 원소들의 곱을 구해 두 값을 곱하는 방법을 이용하였다. 먼저 nums[i]의 왼쪽에 있는 값들의 곱을 output[i..
[리트코드(LeetCode)] 15. 3Sum - Python leetcode.com/problems/3sum/ 3Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 를 학습하면서 수록된 코드를 참고하였습니다. - 풀이 1. 부르트 포스로 계산 -> 타임아웃 발생 for문을 3번 사용해서 풀이하는 단순한 방법으로 O(n^3)의 시간복잡도를 가지는 방법이다. for 문을 들어가서 해당 인덱스가 가리키는 리스트의 값이 바로 이전 원소 값과 동일하다면 continue 시켜줘서 중복을 제거한다. 리트코드에서 이 방법은 타..
[리트코드(LeetCode)] 42. Trapping Rain Water - Python leetcode.com/problems/trapping-rain-water/ Trapping Rain Water - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 를 학습하면서 수록된 코드를 참고하였습니다. - 풀이 1. 투 포인터를 이용 두 개의 포인터가 각각 리스트의 좌, 우에서 시작한다. 현재 포인터가 가리키고 있는 인덱스를 left, right에 저장하고, 포인터가 지나왔던 자리 중 가장 높았던 값을 left_max, right_max에 저장한다. 두..
[Spring] Validation @Email은 null을 허용한다. 배경 회원가입 및 로그인 시 이메일 형식, 닉네임 글자 수 제한, 비밀번호 규칙 등 사용자가 입력한 데이터를 DB에 저장하기 전에 데이터에 대한 유효성을 체크하는 작업은 프론트단뿐 아니라 백엔드에서도 반드시 필요한 작업입니다. Spring 에서는 spring boot validation starter에 대한 의존성을 추가함으로써 어노테이션을 기반으로 쉽게 유효성 체크를 할 수 있습니다. org.springframework.boot spring-boot-starter-validation 문제 인식 (세부적인 어노테이션 소개는 각설하고) 이메일 형식에 대한 유효성을 체크할 때 @Email을 사용하는데 이상한 점을 발견했습니다. 아래 테스트 코드를 주목해 주세요. import org.junit.jupiter...
[백준 14466] 소가 길을 건너간 이유 6 (Java) 문제 링크 : www.acmicpc.net/problem/14466 14466번: 소가 길을 건너간 이유 6 첫 줄에 N, K, R이 주어진다. 다음 R줄에는 한 줄에 하나씩 길이 주어진다. 길은 상하좌우로 인접한 두 목초지를 잇고, r c r′ c′의 형태 (행, 열, 행, 열)로 주어진다. 각 수는 1 이상 N 이하이다. www.acmicpc.net 풀이 소의 위치를 시작점으로 하여 BFS를 통해 목초지를 탐색하되, 다리가 존재하는 경우는 탐색하지 않도록한다. 탐색이 끝나고 다른 소 위치에 대한 방문 여부를 체크하는데 이 때 방문이 되지 않은 경우는 다리를 지나지 않으면 만날 수 없다는 것을 의미하기 때문에 해당 경우를 모두 찾으면 된다. 2차원 int 배열 map은 BFS탐색을 할 목초지로 소 위치..