본문 바로가기

알고리즘 풀이/프로그래머스

(36)
[프로그래머스] 전화번호 목록 - JAVA 🔗 문제 링크 [프로그래머스] 전화번호 목록 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 📝 풀이 과정 전화번호를 set에 모두 넣고, for문을 통해 전화번호를 앞에서부터 잘라 set.contains()를 활용해 set에 있는지 확인했다. 만약 set에 존재한다면, 해당 전화번호는 다른 전화번호로 시작하기 때문에 접두어가 있으므로 false를 반환해 주었다. 반복문이 끝날 때까지 return 되지 않았다면, 다른 전화번호가 접두어가 되는 경우가 없기 때문에 true를 반환해 주었다. 💻 코드 impo..
[프로그래머스] 다트 게임 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA 🔗 문제 링크 [프로그래머스] 다트 게임 / 2018 KAKAO BLIND RECRUITMENT(1차) 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 📝 풀이 과정 다트 게임의 결과가 일정한 패턴을 가진 String로 들어오게 된다. String을 하나씩 끊어가며 처리하는 방법도 있겠지만, 숫자의 경우 10이 들어오게 되면 처리가 불편해지기 때문에 Pattern과 Matcher class를 사용하기로 했다. (참고 : [Java] Pattern, Matcher Class로 정규식 활용하기) Pattern pattern = Pattern.compile("([0-9]+)([SDT])([*#]?)"); Matcher matcher = pattern.matcher(dartResult);..
[프로그래머스] 비밀지도 / 2018 KAKAO BLIND RECRUITMENT(1차) - JAVA 🔗 문제 링크 [프로그래머스] 비밀지도 / 2018 KAKAO BLIND RECRUITMENT(1차) 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 📝 풀이 과정 지도 두 장을 겹쳐 둘 중 하나라도 벽('1')일 경우 결과 값에 벽('1')이 나오는 것을 보고 OR연산이 떠올랐다. 1010 | 1100 = 1110 Integer.toBinaryString(arr1[i] | arr2[i]).replace('1', '#').replace('0', ' ') 입력은 정수 배열의 형태로 들어오기 때문에 하나씩..
[프로그래머스] 주식가격(Stack) - JAVA 문제 링크 [프로그래머스] 주식가격 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 1️⃣ 이중 반복문 풀이 과정 처음 문제를 보자마자 이중 반복문으로 풀면 좋겠다고 생각했다. 0번 index부터 반복문을 돌며 해당하는 index 다음에 감소하는 주식 가격이 나올 때까지 answer[index]값을 증가시켜준다면 쉽게 나오기 때문이다. 코드 class Solution { public int[] solution(int[] prices) { int[] ans = new i..