본문 바로가기

정리/알고리즘53

프로그래머스 - 크레인 인형뽑기 프로그래머스 (코딩테스트연습) - 크레인 인형뽑기 해당 문제는 스택에 뽑은 번호를 넣어두고, 번호를 뽑을 때 마다 해당 스택의 peek값과 비교해 같다면 pop을 하고 answer 값을 1씩 더해주었고, 같지 않다면 스택에 계속 쌓는 식으로 구현하였다. move 좌표의 높이를 알고 있다면 바로 이중 배열에서 가져갈 수 있을 거라 생각해 board 각 좌표의 높이를 구한 후에 스택 로직을 수행했었는데, public int solution(int[][] board, int[] moves) { int answer = 0; int N = board.length; int[] boardXHeight = new int[N]; Stack barket = new Stack(); for (int i = 0; i < N; .. 2022. 3. 28.
프로그래머스 - 키패드 누르기 프로그래머스(코딩테스트 연습) - 키패드 누르기 해당 문제를 처음 풀때에는 키패드의 인덱스를 저장한 맵을 미리 선언한 후 해당 패드의 인덱스를 가져와 패드 인덱스를 3으로 나눈 몫과 나머지를 통해 왼손으로 패드를 누를지 오른손으로 패드를 누를지 결정하는 방식으로 풀었습니다. 키패드의 인덱스는 0 부터 시작해 11까지로 정해두고 현재 왼손의 위치 오른손의 위치는 각각 눌러야 하는 키패드의 인덱스를 3으로 나눈 나머지에 따라 0이면 왼손, 1이면 왼손/오른손중 결정(더 가까운 위치는 몫과 나머지를 x,y 좌표라 생각하고 키패드의 몫과 나머지를 각 손 위치의 몫과 나머지와 각각의 차이를 더함)하는 방식으로 풀었습니다. public String solution(int[] numbers, String hand) .. 2022. 3. 25.
프로그래머스 - 숫자 문자열과 영단어 프로그래머스 (코딩테스트연습) - 숫자 문자열과 영단어 해당 문제는 간단히 영문 단어들과 숫자를 맵핑한 맵을 만들어 두고(한단어 + 영문으로 된 조합이 없었음) 한글자씩 뽑아두면서 숫자면 바로 답변 문자열에 넣고, 아닌경우 다음 문자를 불러와 합친 단어로 맵에서 찾는 방식으로 풀었습니다. 제한사항에 zero 또는 0으로 시작하는 경우가 없고 올바른 입력 s만 주어진다는 제한조건이 있으므로 해당 방식으로 문제를 쉽게풀었습니다. private static final Map wordToNumber = new HashMap(); static { wordToNumber.put("zero", "0"); wordToNumber.put("one", "1"); wordToNumber.put("two", "2"); wor.. 2022. 3. 24.
프로그래머스 - 신규 아이디 추천 프로그래머스 (카카오 블라인드 2021) - 신규 아이디 추천 해당 문제는 정규식을 통해 문제에 나온 단계별로 변경을 진행했습니다. 딱 7단계만 진행하면 되는지 몰라서 base case의 경우를 정하고 재귀를 통해 풀려고 했는데, 테스트 결과가 제대로 나오지 않아 문제 그대로 7단계만 진행하도록 구현했습니다. 정규식을 잘 쓰면 좋은데, 바로 보고 이해하기가 쉽지 않은경우가 있어 잘 안써서 검색을 통해 정규 표현식을 구해 풀었습니다. public String solution(String new_id) { //1단계 String answer = new_id.toLowerCase(); // 2단계 answer = answer.replaceAll("[^a-z0-9_|\\-|.]", ""); // 3단계 answ.. 2022. 3. 23.