본문 바로가기

정리60

프로그래머스 - 숫자 문자열과 영단어 프로그래머스 (코딩테스트연습) - 숫자 문자열과 영단어 해당 문제는 간단히 영문 단어들과 숫자를 맵핑한 맵을 만들어 두고(한단어 + 영문으로 된 조합이 없었음) 한글자씩 뽑아두면서 숫자면 바로 답변 문자열에 넣고, 아닌경우 다음 문자를 불러와 합친 단어로 맵에서 찾는 방식으로 풀었습니다. 제한사항에 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.
해시 - 로또의 최고 순위와 최저 순위 프로그래머스 (모든문제-해시) - 로또의 최고 순위와 최저 순위 해당 문제는 Set에 로또 집합을 넣어둔 뒤, 입력 받은 로또 번호를 기준으로 맞춘 갯수와 알아볼 수 없는 갯수를 구한뒤 최고로 많이 맞춘 것은 맞춘 갯수 + 알아볼수 없는 갯수, 최저 순위는 맞춘것만 맞았을 경우 2가지 경우 이라는 것을 알 수 있습니다. 당첨 순위는 7 - 맞춘 갯수, 로 구할 수 있는데 0개 맞춘 경우는 1개 맞춘 것과 마찬가지 이므로 최소 1개 맞춘것으로 계산을 하면 쉽게 문제를 풀 수 있습니다. public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[2]; Set winNumsSet = new HashSet(); for (int win.. 2022. 3. 22.
해시 - 신고결과받기 프로그래머스 (카카오) - 신고 결과 받기 해당 문제는 '신고 받은자'라는 키를 기준으로 신고한 사람들의 집합을 저장 한 후, 각 id_list 별 신고 받은자에 맞는 결과(신고한 사람의 수가 k번 이상)에 id_list의 값들이 있다면 해당 카운트를 증가시키는 방식으로 문제를 해결했습니다. public int[] solution(String[] id_list, String[] report, int k) { int[] answer = new int[id_list.length]; Map reportMap = new HashMap(); for (String list : report) { String[] info = list.split(" "); Set reportSet = reportMap.g.. 2022. 3. 21.