정리/알고리즘53 프로그래머스 - 폰켓몬 해당 문제는 입력받은 포켓몬 종류를 해시맵에 종류를 키로 값은 카운트 값을 가지게 해서 넣고, 문제가 원하는 결과는 최대 다양하게 포켓몬 종류를 가지는 경우로 해시맵의 사이즈와 같다는 것을 알 수 있습니다. 제한조건으로 고를 수 있는 포켓몬 수는 입력받은 nums.length 의 반 이므로 Math.min으로 해시맵의 사이즈와 nums의 사이즈 중 작은값을 리턴하도록 구현했습니다. 단순하게 다 넣고 해시맵의 크기와 최대 고를수 있는 갯수중 작은 값을 리턴하는 방식과, 해시맵에 넣는 중 그 답변 크기가 maxChoice 크기보다 커질 경우 바로 종료 하는 방식도 있을듯합니다. public int solution(int[] nums) { int answer = 0; Map ketmonMap = new Has.. 2022. 4. 5. 프로그래머스 - 멀쩡한 사각형 해당 문제를 처음에는 기울기를 통해 문제를 풀려고 했었습니다. 예를 들어 예시와 같은 w = 8,h = 12 인 경우에 기울기를 구하면 1.5라는 값이 나왔고, 그림을 그려보니 기울기의 올림 값을 w 와 곱한 갯수가 빠진 것을 알 수 있었습니다. 간단하게 이렇게 문제를 풀어보니, 원하는 결과가 나오지 않았습니다. 예외 케이스를 찾아보니 w = 3, h = 5인 경우가 예외 상황인걸 알 수 있었습니다. 이런식으로 찾다 보니 최종적으로 다음과 같은 결과를 얻을 수 있었습니다. public long solution(int w, int h) { long count = 0; for (int x = 0; x < w; x++) { count += Math.ceil((double) h * (x + 1) / w) - M.. 2022. 4. 4. 프로그래머스 - 오픈채팅방 프로그래머스 (코딩테스트 연습) - 오픈채팅방 해당 문제는 고유한 user_id 값이 주어졌기때문에 user_id를 키로 하고 값을 nickname으로 두는 해시 맵을 구성해 데이터를 저장 한 후 이후 record 를 돌면서 Enter 혹은 Leave 상황일때 메시지 로그를 user_id를 통해 마지막 Nickname 값을 가져와서 셋팅하도록 문제를 풀었습니다. private static final String ENTER_POSTFIX = "님이 들어왔습니다."; private static final String OUT_POSTFIX = "님이 나갔습니다."; private static final String ENTER = "Enter"; private static final String CHANGE =.. 2022. 3. 31. 프로그래머스 - 문자열압축 프로그래머스 (코딩테스트연습) - 문자열 압축 해당 문제는 반복되는 문자를 압축하여 표현하는 문제로 몇개 단위로 압축할지는 정해져 있습니다. 반복되는 문자의 최대값은 입력 받은 문자열 길이의 1/2 이고 1개부터 그전까지 반복하는 경우를 구해 압축을 진행했습니다. 반복단위를 넘어서는 마지막 문자들은 그대로 출력하는 부분을 예외로 두고 압축 문자열을 만들어 가며 표현한 문자열 중 가장 짧은 것의 길이를 구했습니다. public int solution(String s) { int answer = s.length(); int sLength = s.length(); for(int repeatLength = 1; repeatLength 2022. 3. 30. 이전 1 2 3 4 5 6 7 ··· 14 다음