2024/08 29

[LeetCode] word search

https://leetcode.com/problems/word-search/  >접근 방법-dfs(backtrack)을 이용한 풀이dfs함수의 리턴값을 boolean으로 주어 방향마다 전진 가능한지 여부 체크-해당 노드가 유효하려면, 전진이 가능한지 여부도 체크해야함.-isValid() 조건 1) 범위 벗어나면X 2) 방문했으면X 3) charAt(idx)와 같아야함-재귀적으로 dfs 메서드 호출하고 하나라도 true를 반환하면 전체 탐색을 멈추고 true를 반환한다. 리턴되지 못하고 빠져나오면 false라는 의미이므로 방문 취소하고 다른 경우의 수 탐색-최종 리턴값이 boolean타입이기 때문에 dfs도 boolean타입인 게 헷갈리지 않음코드 구현class Solution { public boo..

[LeetCode] permutation sequence

https://leetcode.com/problems/permutation-sequence/  문제 파악1~n 까지의 수의 순열을 구하고, 그 중 k번째 순열을 문자열 형태로 리턴1 1 접근 방법-순열 문제코드 구현import java.util.*;class Solution { public String getPermutation(int n, int k) { String answer=""; List> permutations = new ArrayList(); boolean[] visited = new boolean[n]; String[] arr = new String[n]; for(int i=1;i(),visited,n,arr); ..

[LeetCode] Permutations

https://leetcode.com/problems/permutations/   문제 파악주어진 배열로 만들 수 있는 모든 순열 구하기1 10 All the integers of nums are unique. (요소 중복 허용)접근 방법💡 -재귀 함수가 리턴되면 마지막에 호출한 함수가 가장 먼저 리턴-리턴 되면 리스트에서 해당 원소 삭제, 방문 배열 초기화 - : 중복 허용, 순서 존재-방문 배열은 하나의 순열 안에서 이루어지는 것을 유의하자.해당 원소에 해당하는 경우의 수를 모두 순회하면서 겹치지 않게 표시 코드 구현import java.util.*;class Solution { //순열 문제 : 중복 허용, 순서 존재 public List> permute(int[] nums) { ..

[LeetCode] Combinations

https://leetcode.com/problems/combinations/ 문제 파악주어진 1~n까지의 범위 중에서, k개의 원소를 갖는 숫자 ‘조합’ 구하기1 1 접근 방법💡 backtrack() 함수 정의하여, 가장 작은 단위의 연산을 정의하고, 재귀적으로 해당 함수를 호출한다. 코드 구현class combinations { public List> combine(int n, int k) { //1~n까지 숫자 중에 k개를 짝지은 조합을 찾아내기 List> result = new ArrayList(); int start = 1; //시작점을 값으로 전달해주기. // 함수에 유동적으로 인자를 주고 싶을 때 사용, 함수에 인자가 증가하며 삽입될..

[LeetCode] Subsets

https://leetcode.com/problems/subsets/description/문제 파악주어진 배열에서 나올 수 있는 subset 모두 구하기(조합)1 10 All the numbers of nums are unique.접근 방법💡 -combination으로 순서가 없는 리스트를 담아 최종 result에 적재-”combinations” 문제와 흡사-조건 걸지 않고 조합 만들어지는대로(길이n) 결과로 반환하는 것이 포인트 코드 구현import java.util.*;class Solution { public List> subsets(int[] nums) { List> result = new ArrayList(); List curr = new ArrayList(); ..

[프로그래머스] 피로도

피로도https://campus.programmers.co.kr/tryouts/140902/challenges  문제 파악💡 -dfs, bfs, dp로도 풀 수 있는 문제-가진 체력으로 각 던전을 돌며 최대 던전 돌 수 있는 횟수 구하기-똑같은 게 계속 반복된다. ⇒ 작은 문제로 줄여서 풀기 (재귀)-순차적으로 돌 필요 없고 어떤 조합이든 많이 돌 수 있는 방법 찾기.k는 1 이상 5,000 이하인 자연수입니다.dungeons의 세로(행) 길이(즉, 던전의 개수)는 1 이상 8 이하입니다.dungeons의 가로(열) 길이는 2 입니다.dungeons의 각 행은 각 던전의 ["최소 필요 피로도", "소모 피로도"] 입니다."최소 필요 피로도"는 항상 "소모 피로도"보다 크거나 같습니다."최소 필요 피로도..

[프로그래머스] 소수 찾기

소수 찾기https://campus.programmers.co.kr/tryouts/140903/challenges 문제 파악순열 문제. 가장 효율적인 방법을 찾아보자.numbers는 길이 1 이상 7 이하인 문자열입니다.numbers는 0~9까지 숫자만으로 이루어져 있습니다."013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 접근 방법💡 permutations 문제와 비슷하지만, curr가 특정 길이 충족되면 result에 추가했던 것과 달리, 가는 도중에 보일 때마다 result에 curr값 추가한다.즉, 길이는 정해지지 않았고 길이가 어떻든 조건 만족하면 리스트에 추가.base case는 카운트되는 것으로 변경소수 구하는 함수는 isPrime() 으로 별도로 선언한다. (리..

[프로그래머스] 후보키

[문제]https://campus.programmers.co.kr/tryouts/140904/challenges  [문제 설명] 후보키프렌즈대학교 컴퓨터공학과 조교인 제이지는 네오 학과장님의 지시로, 학생들의 인적사항을 정리하는 업무를 담당하게 되었다.그의 학부 시절 프로그래밍 경험을 되살려, 모든 인적사항을 데이터베이스에 넣기로 하였고, 이를 위해 정리를 하던 중에 후보키(Candidate Key)에 대한 고민이 필요하게 되었다.후보키에 대한 내용이 잘 기억나지 않던 제이지는, 정확한 내용을 파악하기 위해 데이터베이스 관련 서적을 확인하여 아래와 같은 내용을 확인하였다.관계 데이터베이스에서 릴레이션(Relation)의 튜플(Tuple)을 유일하게 식별할 수 있는 속성(Attribute) 또는 속성의 집..

[Web] 역대 클라이언트-서버 간 통신 방식 총 정리

REST API 방식에 대해 공부를 하려고 하다보니..갑자기 그동안 클라이언트와 서버가 통신하는 방식의 역사가 궁금해졌다.. 지금은 너무나 당연한 방식인데, 과연 예전에는 어땠을까???찾아보니 REST API 형태가 도입되기 전의 통신 방식은 지금과는 좀 달랐다. 그 중에서 특히 많이 사용된 몇 가지를 정리해보자.    1. RPC (Remote Procedure Call)RPC는 클라이언트가 서버에게 "이 함수 좀 대신 실행해줘!"라고 요청하는 방식.클라이언트는 서버에 있는 메서드를 마치 로컬 메서드처럼 호출할 수 있는 것.예를 들면, SOAP이라는 프로토콜이 있다. SOAP는 XML을 기반으로 동작하며, 원격 프로시저 호출을 가능하게 해준다.서버에 요청을 보내고, 서버는 응답을 XML 형식으로 돌려주..

Web 2024.08.11