-
정수를 대체하는 횟수는 ? : 중요한 기본기 + 재귀 , mapCodeingTestPrac/Java Coding Test 2023. 8. 7. 19:01
리트 코드의 문제이다.
문제를 해결하는 과정도 중요하지만, 문제를 푸는 방식도 중요하다.
1. 에지 케이스를 항상 생각하자 .
정수 값의 범위가 주어졌을때 양 끝 값이 들어오는 조건문을 항상 먼저 기입해두자.
2. 적절한 자료구조를 생각하면서 패턴을 찾자 .
패턴만 찾을려고하면 문제의 해결이 보이지 않거나 어렵게 푸는 경향이 있다라는 것을 알게 되었다 . 문제에 집중을 하되 지속적으로 머리 속의 자료구조를 뒤져보자.
복잡 한 패턴은 단순하게 접근할때 풀릴때가 많다.
숫자의 패턴이 안보이는 상태에서 , 주어진 조건을 넣어 완탐이 가능한 재귀함수를 생각하는 방법이 있다.
class Solution { Map<Integer, Integer> map = new HashMap<>(); public int integerReplacement(int n){ if (n == Integer.MAX_VALUE) return 32; //n = 2^31-1; if(n == 1) return 0; if(map.containsKey(n)) { return map.get(n); } else if(n % 2 == 0) { map.put(n, integerReplacement(n/2) + 1); } else { map.put(n, Math.min(integerReplacement(n+1), integerReplacement(n-1)) + 1); } return map.get(n); } }
'CodeingTestPrac > Java Coding Test' 카테고리의 다른 글
[1차] 셔틀버스 Java 풀이 [프로그래머스] (1) 2023.08.29 [프로그래머스] 후보키 Java 조합 - 재귀 , 백트래킹 (0) 2023.08.28 시소 짝꿍 , DS (0) 2023.08.07 모든 섬사이의 다리를 만들고 비용 최소를 구하자 , kruskal union find (0) 2023.08.06 1 번부터 가장 먼 거리의 노드의 개수 ? 배열에서 최대값의 개수 구하기 (0) 2023.08.06