[알고리즘] LeetCode 438. Find All Anagrams in a String JS
2022. 11. 21. 22:44
알고리즘
개요 s, p 두 가지 문자열이 주어지는데 이때 p가 순서 상관없이 s의 부분집합이 되는 모든 인덱스를 찾는 문제였다 Find All Anagrams in a String - 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 풀이 s 문자열을 계속 해쉬로 파싱하면서 p 문자열과 비교하여 풀었다. JS의 단점으로 map자료구조가 서로 같은지 비교하는게 안되어 직접 코드를 작성해줘야한다는 점이 조금 불편했다. /** * @param {string} s * @param ..
[알고리즘] LeetCode Unique Paths
2022. 11. 20. 17:08
알고리즘
개요 Unique Paths - 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 격자판이 주어지는데 시작 지점 왼쪽 상단 모서리부터, 도착 지점 오른쪽 하단 모서리까지 도착할 수 있는 모든 경우의 수를 구하는 문제이다 도착 지점까지 오른쪽과 아래쪽으로 한 칸씩만 이동할 수 있다. 풀이 일반적인 dp 접근 방식으로 풀면 어렵지 않게 풀 수 있다. 특정 위치로 도착하는 경우의 수는 아래로 내려오는 경우와 오른쪽으로 이동하는 경우 해당 좌표로 도착할 수 있는데 그 전 ..
[알고리즘] LeetCode Number of IsLands
2022. 11. 18. 20:15
알고리즘
개요 섬의 갯수를 구하는 전형적인 DFS 문제이다 2차원 배열로 섬이 주어질 때 전체 섬이 몇개있는지 구하는 문제였다 Number of Islands - 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"을 찾아야했다. 만약 1을 발견했다면 해당 지점부터 DFS탐색을하며 1을 전부 0으로 바꿔준 후 섬의 갯수를 하나 증가시켜준다 이때 주의해야할 점은 대각선으로 1이 대각선으로 붙어있다면 서로 떨어져있는 것으로 본다는 것이..
[알고리즘] LeetCode Flood Fill
2022. 11. 18. 20:10
알고리즘
개요 전형적인 DFS 문제로 시작점이 주어지는데 시작점의 숫자와 같은 숫자들을 계속 확산하면서 바꿔주는 문제이다. 다시 정리하면 시작점의 상하좌우에서 시작점과 같은 숫자가 있다면 color라는 변수의 숫자로 바꿔주고 또 바뀐 문자의 상하좌우를 확인해서 바꿔주는 그런 문제이다. Flood Fill - 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 풀이 DFS 문제라는 걸 바로 알았는데 실제 구현을 이상하게 했다. m x n을 헷갈리지않나 if문을 달아서 탐색이 제..
[알고리즘] Leetcode Longest Palindrome
2022. 11. 16. 19:17
알고리즘
개요 문자열이 주어졌을 때 문자열에서 만들어낼 수 있는 최대 회문 문자열을 구한 뒤 그 길이를 리턴하는 문제이다 Longest Palindrome - 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 풀이 처음엔 문제 접근을 잘못해서 원본 문자열 순서 그대로 문자를 유지하면서 만들어야하는 줄 알았다. 그런데 그게 아니라 주어진 문자열의 문자들을 사용하여 만들 수 있는 최대 회문 문자열 길이를 구하는게 정답이었다. 따라서 다시 풀어보면 s라는 문자열의 문자 하나하나를..
[알고리즘] Leetcode 392. Is Subsequence
2022. 11. 11. 21:14
알고리즘
개요 Is Subsequence - 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 source 문자열 s와 target 문자열 t가 주어질 때 s가 t안에 순서대로 포함되어 있는지를 확인하는 문제였다 해결 /** * @param {string} s * @param {string} t * @return {boolean} */ var isSubsequence = function (s, t) { if (s.length > t.length) return false; l..
[알고리즘] Leetcode 205. Isomorphic Strings
2022. 11. 11. 21:04
알고리즘
개요 Isomorphic Strings - 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 대응되는 문자인지 확인하는 문제이다. 예시로 egg와 add가 주어졌는데 e는 a로 g는 d로 이전에 나왔던 문자를 반대편 문자로 대치시키면서 푸는 문제로 이해했다. 암호화하는 방법과 유사하다고 생각이 들었다. 풀이 처음엔 하나의 문자로 해시를 만들어 풀었는데 그럴 경우 한 방향에서 전부 다른 문자가 나올 경우 대응되는 문자인지 확인이 불가능했다 따라서 해시 2개를 사용하여..
[알고리즘] 튜플 js
2022. 11. 4. 21:30
알고리즘
개요 집합이 주어질 때 어떤 튜플인지를 return 하는 문제였다. 집합에서의 원소 순서는 상관없지만 집합은 튜플 원소의 위치와 상관이 있다. 예를들면 튜플이 [20, 10, 50, 30]이라고 할 때 원소가 3개인 집합을 만드려면 20, 10, 50 튜플 순서에 따라 포함하되 배치는 상관이 없다는 말이 된다 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 * 1) 데이터를 배열로 변경하고 {}를 자른다 * 2) 원소 배열 길이 내림차순으로 변경하고 해당 배열의 추가되는 원소가 튜플에 순서로 들어갈 친구다. * 3) 해쉬로 이전에 들어갔던 값들을 저장..
[알고리즘] 위장 js
2022. 11. 4. 21:12
알고리즘
개요 * 스파이 옷들이 주어지고 옷들의 조합을 통해 만들 수 있는 모든 경우의 수를 구해라 * 안입을 수도 있고 2차원 배열의 0번 인덱스는 옷의 이름, 1번 인덱스는 종류(바지, 외투...)이다 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제 자체적으로 해쉬라고 명세되어 있기도 하고 해쉬로 DFS돌리면 되겠구나! 생각을 했다. 2차원 배열 입력 => hash map으로 옷 종류별 정리 => DFS를 돌리기 위해 옷만 모아놓은 배열로 만들었다. 그렇게 구현을 하고보니 옷을 안입는 경우를 체크하기가 어려웠다. check배열을 두고 일부로 빈 문자를..
[알고리즘] 3진법 뒤집기, 숫자의 표현,
2022. 10. 31. 21:43
알고리즘
3진법 뒤집기 - 개요 자연수 n을 3진법으로 만들어 뒤집고 뒤집은 수를 다시 10진법으로 맞추기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 function solution(n) { let answer = 0; let str = n.toString(3).split("").reverse().join(""); answer = parseInt(parseInt(str, 3).toString(10)); return answer; } 정수를 toString, parseInt로 진법 변환할 수 있다는 것을 처음 알았다. parseInt(string: stri..