프로그래머스 16

[코딩테스트 연습] 주차 요금 계산 - Lv.2

주차 요금 계산 - Lv.2 https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr HashMap, TreeMap(정렬을 위해)를 사용하여 각 차량의 입차 시간과 총 주차 시간을 저장했다. 이 문제는 여러 가지 조건들을 통해 구현 능력을 확인하고, 자료구조를 적절히 활용하는 것에 초점은 둔 것 같다. 차량의 입차 시간을 저장하는 inTime Map과 차량의 총 주차 시간을 저장하는 parking Map을 선언했다. 차량 번호가 아닌 입/출차를 의미하는..

프로그래머스 2024.02.01

[코딩테스트 연습] n ^ 2 배열 자르기 - Lv.2

n ^ 2 배열 자르기 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] j\i 1 2 3 1 1 2 3 2 2 2 3 3 3 3 3 처음에는 규칙을 찾느라 허덕거렸지만 위의 표를 그린 뒤, 바로 규칙을 찾았다. 더보기 i와 j를 비교해서 더 큰 값을 찾으면 된다! [코드] class Solution { public int[] solution(int n, long left, long right) { int len = (in..

프로그래머스 2023.10.11

[코딩테스트 연습] 다음 큰 숫자 - Lv.2

[문제] 다음 큰 숫자 - Lv.2 https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 처음 접근했던 방법은 n을 이진수로 변환해서 1의 개수(cnt)를 저장한 뒤, while 반복문을 사용해서 n을 1씩 증가시켜 똑같이 이진수로 변환하고 1의 개수(reCnt)를 저장한 뒤에 cnt와 reCnt가 같을 때, 반복문을 종료하여 정답을 찾았다. 이렇게 코드를 작성했을 때 시간 복잡도는 O(n^2)로 당연히 시간 초과가 날 것으로 예상했다..

프로그래머스 2023.09.26

[코딩테스트 연습] 명예의 전당(1) - Lv.1

명예의 전당 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] List를 사용하여 문제를 해결했다. 기본적으로 List에 값이 추가될 때마다 정렬을 진행해 준다. List에 들어 있는 요소의 개수가 k개 보다 작다면 계속 List에 score 값을 추가해 준다. List에 들어 있는 요소의 개수가 k개 이상일 경우 List의 첫 번째 값과 점수를 비교해서 List에 추가 여부를 결정한다. 최종적으로 반환되는 배열에는 항상..

프로그래머스 2023.08.03

[코딩테스트 연습] 다음에 올 숫자 - Lv.0

다음에 올 숫자 [문제 풀이] 만약 arr = {1, 2, 3}으로 등차수열을 이룰 경우, arr [1] - arr [0]의 값과 arr [2] - arr [1]의 값은 동일하다. 그러므로 다음에 올 수는 배열의 마지막 값에 arr [1] - arr [0](공차)의 값을 더하면 구할 수 있다. arr = {2, 4, 8}으로 배열이 등비수열을 이룰 경우, 배열의 마지막 값에 공비를 곱해주면 답을 구할 수 있다. 공비는 common [1] / common [0]으로 구할 수 있다. [코드]

프로그래머스 2023.06.12

[코딩테스트 연습] 무작위로 K개의 수 뽑기 - Lv.0

무작위로 K개의 수 뽑기 [문제 풀이] 먼저 반환되는 배열(answer)의 값을 모두 -1로 초기화한다. distinct() 메서드를 사용해서 arr 배열의 중복을 제거한다. 중복을 제거한 배열을 re라는 배열에 저장한 뒤, 이 배열(re)이 k보다 길이가 짧거나 같을 경우와 그렇지 않을 경우 for문의 범위를 조정하여 반환되는 배열(answer)에 값을 저장한다. [코드]

프로그래머스 2023.06.05

[코딩테스트 연습] 세 개의 구분자 - Lv.0

세 개의 구분자 [문제 풀이] 배열에 넣을 문자열을 저장할 임시 변수로 tmp를 선언했다. myStr 중에서 문자 하나가 "a", "b", "c"이고, tmp가 빈 변수가 아니라면 배열에 추가한다. 문자 하나가 "a", "b", "c"이 아닐 경우에는 tmp에 문자를 더해준다. ( ↑ 반복문 안에서 진행) 반복문이 끝나고 tmp에 문자가 있으면 배열에 추가해 주고, 빈 배열일 경우 "EMPTY"를 추가해 준다. 이렇게 문자를 구분하여 푸는 문제를 filter() 메서드를 사용하여 풀어내려고 시도 중이다. 아직 filter() 메서드 사용법이 익혀지지 않아서 문제를 풀고 다른 분의 풀이를 보고 참고했다. 두 번째 코드가 filter() 메서드를 사용하여 작성한 코드이다. [코드] stream()을 사용하여..

프로그래머스 2023.06.02

[코딩테스트 연습] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 - Lv.0

특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 [문제 풀이] Java에서 특정 문자열의 인덱스를 찾기 위해 indexOf() 메서드를 사용한다. 이 문제에서는 myString의 부분 문자열 중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 반환해야 한다. pat로 끝나는 가장 긴 부분 문자열을 찾기 위해서는 lastIndexOf() 메서드를 사용하면 된다. lastIndexOf() 메서드를 사용해서 pat 문자열 앞까지 answer에 저장하고 pat까지 저장하면 끝난다. [코드]

프로그래머스 2023.05.26

[코딩테스트 연습] 원하는 문자열 찾기 - Lv.0

원하는 문자열 찾기 [코드] [문제 풀이] 문제에서 대소문자를 구분하지 않는다는 조건이 있으므로 매개변수로 받은 문자열을 모두 대문자로 변환하여 저장하였다. 이제 myString에 pat 문자열이 포함되었는지 확인만 하면된다. contains() 메서드를 사용해서 pat 문자열이 myString 문자열에 포함되었는지 확인했다. contains() 메서드의 type은 boolean 이므로 if문의 조건식으로 사용하여 return 값을 결정했다. if문에 걸리면 1을 반환하고 그렇지 않으면 0을 반환한다.

프로그래머스 2023.05.25

[코딩테스트 연습] 배열 조각하기 - Lv.0

배열 조각하기 [문제 풀이] query의 인덱스가 짝수일 경우에는 arr[0] ~ arr[query[i]] 까지 배열을 복제하고, query의 인덱스가 홀수일 경우에는 arr[query[i]] ~ arr[arr.length-1] 까지 배열을 복제한다. Arrays의 copyOfRange 메서드를 사용해서 배열을 복제하였다. copyOfRange(복제할 배열, 시작 위치, 배열의 크기) copyOfRange 메서드의 마지막 파라미터 값이 배열의 크기이므로 코드를 작성할 때 1씩 더한 값을 넣어줬다. "arr.length는 왜 +1을 하지 않았나요?"라는 질문이 떠오를 수는 있지만 조금만 생각해 보면 이해할 것이다. (우리는 배열의 마지막 요소의 인덱스를 구할 때 arr.length-1을 사용한다.) ** ..

프로그래머스 2023.05.22