Algorithm
-
[깊이우선탐색] 프로그래머스 타겟넘버Algorithm 2024. 10. 12. 22:13
깊이 우선 탐색(DFS, Depth First Search)은 그래프나 트리 같은 자료 구조에서 한 경로를 끝까지 탐색한 후, 다른 경로를 탐색하는 방식의 탐색 기법입니다. 한 번에 한 방향으로 깊이 탐색을 계속하다가 더 이상 탐색할 수 없을 때 이전 경로로 돌아가 다른 경로를 탐색합니다. 이는 재귀적 호출이나 스택을 사용하여 구현할 수 있습니다.DFS의 특징한 경로를 끝까지 탐색하고 나서 다른 경로를 탐색.순환 구조를 가진 그래프에서 무한 루프에 빠질 수 있기 때문에 방문한 노드를 체크해야 함.재귀적 호출이나 스택을 통해 구현 가능.깊은 노드까지 빠르게 탐색할 수 있으나 최적의 해를 보장하지 않음.DFS는 모든 가능한 경로 탐색, 백트래킹, 경로 찾기 문제에 자주 사용됩니다. 스택을 활용하는 DFSf..
-
코딩테스트에 많이 쓰이는 자바스크립트 메서드 reduce(), 누적값, 중복요소 찾기Algorithm 2023. 4. 19. 12:07
일주일동안 코테준비로 아주 정신없이 흘러갔다! 아직 알고리즘 문제를 많이 푼건 아니지만 (총 60문제정도?) 난이도가 높아지면서 공통적으로 자주쓰이는 자바스크립트 메서드 중 하나로 reduce함수를 정리해봤다 누적값이 필요할 때, 혹은 중복을 찾을 때 Reduce메서드 자바스크립트의 reduce함수는 배열의 각 요소를 순회하며 callback함수의 실행 값을 누적하여 하나의 결과값을 반환 합니다. const numbers = [1,2,3,4] numbers.reduce( //첫번째 파라미터 : 콜백함수 (누산값,현재요소값,현재요소index,현재배열)=> { return 다음누산값 }, //두번째 파라미터: 초기 누산값 초기누산값) 요소를 모두 합한 값을 구할 때도 간단히 Array.reduce((acc,..
-
HackerRank 문제 해석, 풀이 Apple and Orange-Java scriptAlgorithm 2023. 4. 12. 18:24
이 문제는 한국어로해도 알아먹기 어려운 문제였다 샘의집에는 열매가 많이 맺힌 사과나무와 오렌지나무가있습니다. 아래의 정보를 이용하여 사과와 오렌지가 각각 몇 개인지 도출하세요. 붉은색영역은 집을 의미한다. s는 시작점, t는 끝나는지점이다. 사과나무는 집의 왼쪽에위치, 오렌지나무는 오른쪽에. 과일이 나무에서 떨어질 때, 과일은 나무의 원점에서 x축을 따라 나무로부터 d 거리 단위로 떨어집니다.음수값은 왼쪽, 양수값은 오른쪽으로 과일이 떨어진 것을 의미함. m개의 사과와 n개의 오렌지의 값이 주어진다. 몇개의 사과와 오렌지가 샘의 집(즉, [s,t]포함 범위)에 떨어질 것인지 구하시오. 예를 들어, 샘의 집이 s=7 t=10에 위치했을 때, 사과나무의 위치는 4이고 오렌지나무의 위치는 12임. 3개의 사과..
-
HackerRank 문제 해석, 풀이 Grading Student - Java scriptAlgorithm 2023. 4. 12. 12:52
문제 해석 해커랜드대학교는 다음과 같은 평가 방침을 갖고있다. -모든 학생은 0-100점사이의 점수를 받음 -40점 미만은 F Sam교수는 학생들을 아래와 같은 방식으로 점수를 주려 한다. -한 학생의 점수가 현 점수의 다음 5의 배수보다 3이하로 차이난다면, 반올림하여 현 점수의 다음 5의 배수를 준다. -점수가 38점 이하라면, 반올림을 해봤자 fail이기 때문에 반올림하지 않는다. example -점수 = 84 (84의 다음 5의 배수는 85이기 때문에 1 차이가 나서 반올림. 점수는 85점을 준다. ) -점수 = 29 ( 38점 이하는 반올림 할 것도 없이 fail. 점수는 그대로 29를준다. ) -점수 = 57 (57의 다음 5의 배수는 60이기 때문에 3 차이가 나서 반올림 하지 않음. 점수는..
-
알고리즘 하드코딩 장인 [프로그래머스] 약수의 개수와 덧셈 (코드 간결화)Algorithm 2023. 4. 11. 13:21
Q. 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요 // 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, // 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. function solution(left, right) { let answer = 0; let arr = []; //left부터 right까지 정수의 약수를 차례로 담을 array let count = []; //left부터 righ..
-
HackerRank 문제 해석, 풀이 Plus Minus- Java scriptAlgorithm 2023. 4. 6. 00:52
다음 주 금요일에 Hacker Rank라는 사이트를 통해 코테를 보게되었다...(둑흔) 영어로 문제푸는데 익숙해져야 할 것 같다. 내일부터 일요일까지는 과제가 있어 월요일부터 코테 집중적으로 풀어봐야될 것 같다ㅠㅠ 영어 + 수학용어는 많이 낯설다 ㅎ.ㅎ... Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero. Print the decimal value of each fraction on a new line with places after the decimal.주어진 정수 배열에서 양수, 음수, 0이 전체에서 차지하는 비율을 계산하세요. 그리고 각 소수의 소숫점 6자리 pr..
-
[알고리즘풀기] 프로그래머스 로그인성공?Algorithm 2023. 3. 30. 01:19
머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요. 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다. 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다. 제한사항 회원들의 아이디는 문자열입니다. 회원들의 아이디는 알파벳 소문자와 숫자로만 이루어져 있습니다. 회원들의 패스워드는 숫자로 구성된 문자열입니다. 회원들의 비밀번호는 같을 수 있지만 아이디는 ..
-
[알고리즘풀기] 프로그래머스 문자열 나누기 Java scriptAlgorithm 2023. 3. 28. 22:24
내일 첫 코딩테스트가 있어서 어제부터 정말 오랜만에 알고리즘문제를풀고있다 꾸준히 풀어볼걸 ㅠ_ㅠ 나는 잘 못풀어서 무조건 for문을 쓰는 찐따다 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개..
-
9. [Programmers] 알고리즘 문제풀기 Java script 문자열 다루기 기본Algorithm 2022. 12. 20. 23:53
두 시간을 잡고있었던 문제.. 최대한 다른 사람들의 답안을 먼저 보지 않고 내가 아는 방법만으로 해결해보고싶은 오기때문에 한참 고민했다. 우선 내가 이번 문제에 써보고 싶었던 method들이 있었다 1. 삼항연산자 2. &&와 || 논리연산자 첫 번째 시도 & 두 번째 시도 function solution(s) { var answer = false; Array.from(s).includes('a'||'b'||'c'||'d'||'e'||'f'||'g'||'h'||'i'||'j'||'k'||'l'||'m'||'n'||'o'||'p'||'q'||'r'||'s'||'t'||'u'||'v'||'w'||'x'||'y'||'z')? answerA="alphabetincluded" : answerA="notinclud..