본문 바로가기

728x90

Java

[프로그래머스] Lv.2 두 큐 합 같게 만들기 문제 해결 과정(Java) 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   해결 과정 문제 이름에서부터 큐(Queue)가 있어서 큐를 사용해야 할 것 같았지만, 큐를 사용하지 않고, 배열만 가지고 구현해 보는 방향으로 생각했다.  문제를 풀기 앞서서 가장 의문이 들었던 점은 "두 큐에서 정수를 추출하고 삽입하는 과정을 몇 번을 해야 초기상태와 같아질까?"였다. 왜냐면 큐는 FIFO(First-In First-Out)형 자료구조이기 때문에 언젠가는 초기 상태와 .. 더보기
[프로그래머스] Lv.2 프렌즈4블록 문제 해결 과정(Java) 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   해결 과정 주어진 String 배열을 더 편하게 사용하기 위해서 2차원 char배열로 만들어서 탐색을 진행했다. 그리고 주어진 문제에서 한 라인으로 떨어질 때, 같은 배열 안에서 처리하고 싶어서 형태를 변형했다.(예를 들어 (넓이) x (높이)가 4*5 라면, (넓이) x (높이)가 5*4인 char [][] 배열 생성)char[][] map = new char[n][m];for(int.. 더보기
[프로그래머스] Lv.2 시소 짝꿍 문제 해결 과정(Java) 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/152996 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    해결 과정  1차 시도: 다중 for 반복문과 Set 사용 결과: 시간 초과 일단 머릿속에서 생각나는 대로 비교하는 과정을 코드로 작성해 보았다. 입력 데이터의 길이가 길어서 같은 무게를 비교하는 것을 방지하는 차원에서 Set을 같이 사용했다. 그럼에도 입력 시간 초과가 날 걸 예상했지만 안 하는 것보단 낫기에 손이 먼저 움직였다. 역시 결과는 시간 초과였다.  2차 시도: 다중 f.. 더보기
[프로그래머스] Lv.2 쿼드 압축 후 개수 세기 문제 해결과정(Java) 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   해결 과정 이 문제를 보고 크기가 큰 배열부터 파악해서, 압축할 수 있으면 압축하고, 못하면 넘어가는 방식으로 해결하면 될 것이라 생각했습니다. 그리고 압축하면 압축했다는 플래그를 설정하여 최대한 같은 배열을 탐색하지 못하도록 설정했습니다.   그리고 문제에서 중요하다고 생각하는 배열을 탐색하는 크기를 설정하는 방법이라고 생각하는데, 이 부분은 반복문의 증감을 잘 설정해서 해결했습니다!.. 더보기
[프로그래머스] Lv.2 k진수에서 소수 개수 구하기 문제 해결 과정 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    해결 과정 문제를 보고 느꼈던 점은 소수를 어디까지 구해야 할지 가장 의문이 들었습니다. 그래서 모든 경우에서 계산 후 가장 큰 값을 출력해 봤습니다. 처음에 int형 내에서 다 표현할 수 있을 줄 알고 int형으로 하다 NumberFormatException 뜨는 것을 확인하고 바로 long으로 바꿨습니다.private long getMax() { long max = -1; .. 더보기
[프로그래머스] Lv.3 표현 가능한 이진트리 문제 해결 과정(Java) 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    해결 과정(힌트) 이 문제를 해결하기 위해서 가장 먼저 주어진 10진수를 2진수로 변환된 이진트리로 표현해야 하는 절차를 거쳐야 합니다. 그래서 long형 변수를 Long.toBinaryString() 메서드를 사용했습니다. Long.toBinaryString(number); 하지만 이렇게 되면 문자열의 길이를 최소로 하여 이진수를 표현하게 됩니다. 예시를 들어보겠습니다. 42를 t.. 더보기
[Solved.ac] Dyanmic Programming 문제 해결 과정(Java) dp문제들을 어떻게 해결했는지 기억해 두기 위해 복기할 겸 작성.    동전 1 (G5) 문제 링크  https://www.acmicpc.net/problem/2293   주어진 동전으로 0원부터 k원까지 내는 상황을 각각 계산, 0원을 내는 경우는 안내는 경우밖에 없으므로 아래와 같이 설정int[] dp = new int[k+1];dp[0] = 1;  그러고, 주어진 동전보다 더 적은 수는 없으므로 동전보다 더 큰 금액을 내는 경우만 고려함.더보기 예를 들어, 1원과 2원으로 3원을 내는 상황이 있다고 가정하자. 그럼 초기 배열은 다음과 같이 될 것이다.index0123dp[index]1000  그리고 1원으로 각각의 금액을 내는 경우는 다음과 같을 것이다.(1원을 내는 경우) → 1원 1개(2원을 내.. 더보기
[프로그래머스] Lv.2 괄호 회전하기 해결 과정(Java) 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr우선 주어진 문자열이 올바른 괄호 문자열인지 체크하고, 한 칸씩 회전하는 과정을 반복하는 것이 핵심이기 때문에 substring() 메서드를 활용해서 문자열을 회전시켰습니다. 그리고, Stack 자료구조를 사용하여 주어진 문자열이 올바른 괄호 문자열인지 확인했습니다. 그리고 스택이 비어있는지 확인하는 로직을 try - catch 블록 내부에서 체크해서 해결했습니다.더보기stack이 비어있을 .. 더보기