[알고리즘][JS] 다중 포인터 패턴
·
알고리즘
다중 포인터 패턴은 공식이름이 아닙니다. 다중 포인터 패턴 배열이나 리스트와 같은 데이터 구조에서 특정 조건을 만족하는 요소를 찾거나 조작하는데 사용되는 알고리즘 기법. 한쌍의 값이나 조건을 충족 시킨다는 개념만 알면 됨. 두가지의 참조값을 사용한다. [1,2,3,4,5,6,7] "asdfasdgaaxvasdFF" 두가지의 참조값을 설정하여 어느 한 곳으로 이동시키며 비교한다. 서로를 향하든 혹은 서로를 향하지 않고 한곳으로 이동하든. 예시 sumZero([-3,-2,-1,0,1,2,3]) // [-3,3] sumZero([-2,0,1,3]) // undefined sumZero([1,2,3]) // undefined sumZero라는 함수는 정렬된 배열을 가진 함수입니다. 1번째 배열에서 -3 3을 더..
[알고리즘] 빈도수 세기 패턴
·
알고리즘
빈도수 세기 패턴? 어떠한 문자열 및 배열을 빈도수체크 방식으로 풀이함 방식 원래는 중첩 for문을 이용하여 풀이하였지만 시간복잡도에서 O(n^2)의 시간 복잡도를 보였기 때문에, 효율적인 알고리즘이 아니라고 판단하였고 빈도수 세기 패턴을 이용하여 시간 복잡도를 줄였다. 문제 두 개의 문자열이 주어졌을 때, 두 번째 문자열이 첫 번째 문자열의 애너그램인지 확인하는 함수를 작성합니다. 애너그램은 다른 글자의 글자를 재배열하여 형성된 단어, 구 또는 이름입니다. 예시 validAnagram('', '') // true validAnagram('aaz', 'zza') // false validAnagram('anagram', 'na..
[JS] 백준 2884 - 알람 시계
·
알고리즘
문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 ..
[JS] 백준 2525 - 오븐 시계
·
알고리즘
문제 KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다. 또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진..
[BOJ] 9012 풀이 - 괄호
·
알고리즘
문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문자열..