본문 바로가기

전체 글61

프로그래머스 - 다트 게임 프로그래머스 - 다트 게임 해당 문제는 큐와 스택을 통해 풀 수 있었습니다. 계산할 숫자와 부호를 문자열에서 분리해 큐에 넣은 뒤 큐에서 데이터를 가져오면서 숫자인 경우에는 스택에 데이터를 넣고 그외 부호인 경우 규칙에 맞게 이전값을 2배로 한다거나 값을 음수로 바꾸거나 하는 로직을 거쳐 최종적으로 스택의 담긴 모든 값을 더해주며 답을 구했습니다. public int solution(String dartResult) { int answer = 0; Queue dartQueue = new LinkedList(); Stack dartStack = new Stack(); String temp = ""; for (int i = 0; i < dartResult.length(); i++) { char tempCha.. 2022. 5. 2.
프로그래머스 - 삼진법 뒤집기 프로그래머스 (월간 코드챌린지 시즌1) - 삼진법 뒤집기 해당 문제는 진법으로 변환할 때 스택에 넣고 꺼내는 식으로 진법을 구할 수 있는데 이를 뒤집어야 하므로 반대로 큐를 통해 해당 문제를 풀었습니다. public int solution(int n) { Queue queue = new LinkedList(); while(n > 0) { queue.add(n % 3); n = n / 3; } int answer = 0; while(!queue.isEmpty()) { answer += (queue.poll() * Math.pow(3, queue.size())); } return answer; } 2022. 4. 20.
프로그래머스 - 약수의 개수와 덧셈 프로그래머스 (월간 코드 챌린지 시즌2) - 약수의 개수와 덧셈 해당 문제는 약수를 구하는 알고리즘을 통해 약수의 개수를 구함으로서 빠르게 풀 수 있었습니다. 이전이라면 1~n까지 반복문을 돌며 n을 나눈 나머지가 0인 것을 약수로 판단하였는데, 지금은 제곱근을 구하고 1부터 제곱근(sqrt(n)) 까지의 반복문중 나머지가 0인 것과 몫이 약수라는 것을 쉽게 구할 수 있었습니다. public int solution(int left, int right) { int answer = 0; for (int i = left; i 2022. 4. 19.