본문 바로가기

분류 전체보기61

프로그래머스 - 짝지어 제거하기 프로그래머스 - 짝지어 제거하기 해당문제는 스택에 한글자씩 넣어 주며 스택의 peek 값과 넣어주는 값이 같다면 스택에 넣지 않고 pop을 하면서 문자를 제거 해 주었습니다. 최종적으로 스택에 값이 남아 있다면 제거하는 것에 실패한 것으로 간주 해 0값을 리턴해 주었습니다. public int solution(String s) { Stack pairStack = new Stack(); for(int i = 0; i < s.length(); i++) { char compareChar = s.charAt(i); if (!pairStack.isEmpty() && pairStack.peek() == compareChar) { pairStack.pop(); } else { pairStack.push(compare.. 2022. 4. 7.
프로그래머스 - 124 나라의 숫자 프로그래머스(연습문제) - 124 나라의 숫자 해당 문제는 3으로 나누 몫과 나머지 값을 이용해 숫자 문자열을 만들면 되는 문제였습니다. rule은 나머지가 각각 0, 1, 2 일때 4, 1, 2 문자열을 붙여주었고, 나온 몫은 다시 재귀로 넣어주는데 이때 나머지가 0인 경우에는 몫에서 1을 뺀 후 재귀 호출을 실행하였습니다. base case는 n이 1보다 작은경우로 생각했었고 아래와 같이 구현하였습니다. private String[] rule = new String[]{"4", "1", "2"}; public String solution(int n) { if (n < 1) { return ""; } int remainder = n % 3; int quotient = n / 3; if (remainde.. 2022. 4. 6.
프로그래머스 - 폰켓몬 해당 문제는 입력받은 포켓몬 종류를 해시맵에 종류를 키로 값은 카운트 값을 가지게 해서 넣고, 문제가 원하는 결과는 최대 다양하게 포켓몬 종류를 가지는 경우로 해시맵의 사이즈와 같다는 것을 알 수 있습니다. 제한조건으로 고를 수 있는 포켓몬 수는 입력받은 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.