전체 글

Algorithm/프로그래머스

프로그래머스 : 약수의 개수와 덧셈(Java)

https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr [풀이] check 메소드를 통해서 약수의 개수를 반환하는 메소드를 만들었다. 이후, 이 약수의 개수를 짝수인지, 홀수인지 확인을 한 다음, 각 수를 더하고 뺐다. 레벨1다운 문제로 크게 막히는 부분은 없었다. [코드] class Solution { public int solution(int left, int ..

Algorithm/프로그래머스

프로그래머스 : 비밀지도(Java)

https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr [풀이] Java의 Integer.toBinaryString 메소드를 이용하면 2진수로 바꾸는 메소드를 만들 필요가 없다. 하지만, 미처 생각하지 못한 부분이 있었는데 첫번재 테스트 케이스의 1이 2진수가 되면 00001 이어야 하는데 메소드를 사용하면 1로 출력이된다. 문제를 풀 때 이것을 빠르게 알아차리지 못해서 꽤 헤맸다. 그래서 이 부분도 변환할 ..

Algorithm/프로그래머스

프로그래머스 : 다트 게임(Java)

https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr [풀이] 구현하는 것에는 큰 어려움이 없지만, 조건이 1번부터 9번까지 총 9개의 조건이 있다. 이 조건을 모두 if-else문으로 구현하였다. 이 중, 신경써야 할 부분은 *이 나타났을때의 조건이다. 만약 *이 발생하면 앞서 중첩되어있는 숫자를 곱해주기 때문이다. 이 부분만 신경쓰면서 하나씩 구현하면 되는 문제이다. [코드] public class Solution { public int solution(String dartResult) { int answer = 0; int[] score = new int[3]; String tem..

Algorithm/프로그래머스

프로그래머스 : 영어 끝말잇기(Java)

https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr [풀이] 주어진 조건에 맞게 구현하면 되는 문제였다. 아래 조건에 따라 차례대로 구현..

Algorithm/프로그래머스

프로그래머스 : 게임 맵 최단거리(Java)

https://programmers.co.kr/learn/courses/30/lessons/1844?language=java 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr [풀이] 제목에도 나와있고 문제에도 나와있듯이 주어진 맵에서 최단거리를 구하는 문제이다. 그렇기에 BFS로 문제를 풀려고 시도했다. 0은 벽이 있는 자리, 1은 벽이 없는 자리인데 전형적인 BFS문제이기에 BFS에 대한 입문 문제로 풀기 좋은 문제였다고 생각한다. 마지막에, 상대 팀 ..

Algorithm/프로그래머스

프로그래머스 : 짝지어 제거하기(Java)

https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr [풀이] 처음에 문자열을 돌면서 i와 i+1번째의 문자가 동일하다면 replace 메소드를 사용하는 식으로 짰는데 이렇게 될 경우 시간복잡도에 의해 문제를 풀지 못한다. (다른 문제를 풀면서도 알게 된 것인데 replace메소드 자체가 내부적으로 메모리를 많이 사용하게 된다고 한다.) 그래서 스택을 이용해서 풀면 보다 간단한 코드로, 효율성 좋게 통..

skyey94
Retrospect