포스팅 썸네일 이미지

코딩테스트

Kotlin 카카오 주차 요금 계산 - ConcurrentModificationException, HashMap, hashing

ConcurrentModificationException https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    자동차의 주차장 출입 누적 시간을 기록한 후, 비용을 계산해서 반환하면 되는 문제이다.아래는 처음에 작성한 답안이다. 어떤 문제가 있을까? /** 누적 주차 시간이 기본 시간 이하라면 기본 요금 누적 주차 시간이 기본 시간을 초과하면 초과한 시간에 대해 단위 시간 마다 단위 요금 초과한 시간이 단위 시간으로 나누어 떨어지지..

2024.09.04 게시됨

포스팅 썸네일 이미지

코딩테스트

프로그래머스 모음사전 Kotlin

https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  로직각 자릿수는 A E, I, O, U, 없음 총 6개가 가능합니다. 사전에서 문자열 사이의 공백을 허용하지 않으므로 A(없음)A와 같은 것은 불가능합니다. 경우의 수 5번째 자릿수까지 고정 시키고 가능한 경우의 수 = 1 4번째 자릿수 ~ = 1 + 5 3번째 자릿수 ~ = 1 + 5*1 + 5*5*1 2번째 자릿수 ~ = 1 + 5*1 + 5*5*1 + 5*5*5*1 1번째 자릿수 ~ = 1 +..

2024.04.25 게시됨

포스팅 썸네일 이미지

코딩테스트

프로그래머스 2개 이하로 다른 비트 Kotlin

https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  로직짝수인 경우에는 1을 더해줬고홀수인 경우에는 오른쪽에서 최초로 만나는 0 비트와 바로 뒤에 있는 1비트를 반전시켜줬습니다. 숫자의 비트를 확인하기 위해 string으로 변환하지 않고, 숫자 2에 2를 곱하면서 각 비트를 확인해줬습니다.비트를 반전시키기 위해 xor 연산을 이용했습니다. 2를 곱하는 대신 shl, 2를 나누는 대신 shr 함수를 이용해도 됩니다.class Solution { ..

2024.04.25 게시됨

포스팅 썸네일 이미지

코딩테스트

Leetcode 42. Trapping Rain Water

https://leetcode.com/problems/trapping-rain-water 제가 생각한 아이디어는 다음과 같습니다. 왼쪽에서부터 오른쪽으로, 오른쪽에서 왼쪽으로 총 2번 탐색을 합니다. 이때, 처음과 끝은 채울 수 없으므로 첫 높이로만 지정하고 물을 채우지는 않습니다. 왼쪽에서 오른쪽으로 탐색할 때, 방문한 벽이 탐색하며 방문한 가장 큰 벽보다 작을 경우, 가장 큰 벽 높이 - 현재 벽 높이만큼 물을 채울 수 있다고 기록합니다. 방문한 벽이 이전 가장 큰 벽보다 크거나 같은 경우에는 가장 큰 벽의 높이만 갱신하고 넘어갑니다. 다시 오른쪽에서 왼쪽으로 탐색할 때, 방문한 벽이 오른쪽에서 왼쪽으로 탐색하며 방문한 가장 큰 벽보다 작을 경우, 가장 큰 벽 높이 - 현재 벽 높이 값과 왼쪽에서 오..

2024.04.12 게시됨

포스팅 썸네일 이미지

코딩테스트

프로그래머스 시간 측정 오류와 H-Index 문제

프로그래머스 Kotlin 시간 측정 오류 https://dodobest.tistory.com/86 Kotlin Boxing Type 쓰지 마세요 체질이라는게바뀝니다 프로그래머스 문자열 내림차순으로 배치하기 문제를 풀어보며, String을 다룰 때 어떻게 하면 시간을 단축할 수 있는지 알아보겠습니다. https://school.programmers.co.kr/learn/courses/30/lessons/12917 프로그래 dodobest.tistory.com 예전에 Kotlin Boxing Type을 사용하거나, Kotlin Navtive 함수를 사용하면 코테 시간이 오래 걸려서 Boxing Type과 Kotlin Native 함수 사용을 지양해야 한다고 생각했다. 오늘 풀었던 H-Index도 IntArr..

2024.04.09 게시됨

포스팅 썸네일 이미지

코딩테스트

Kotlin Boxing Type 쓰지 마세요 체질이라는게바뀝니다

240409 내용 추가 이 글에서 설명한 시간 측정 차이는 프로그래머스 채점 오류라고 생각합니다. 아래 글을 참고해주세요. https://dodobest.tistory.com/96 프로그래머스 시간 측정 오류와 H-Index 문제 프로그래머스 Kotlin 시간 측정 오류 https://dodobest.tistory.com/86 Kotlin Boxing Type 쓰지 마세요 체질이라는게바뀝니다 프로그래머스 문자열 내림차순으로 배치하기 문제를 풀어보며, String을 다룰 때 어 dodobest.tistory.com ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 프로그래머스 문자열 내림차순으로 배치하기 문제를 풀어보며, String을 다룰 때 어떻게 하면 시간을 단축할 수 있는지 알아보겠습니다. https://s..

2024.03.26 게시됨

포스팅 썸네일 이미지

코딩테스트

프로그래머스 햄버거 만들기 Kotlin 빠른 답안

https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제의 테스트 케이스가 모든 경우를 다루고 있지 않아, 꼼수로 소요 시간을 줄일 수 있다. class Solution { fun solution(ingredient: IntArray): Int { var answer: Int = 0 var idx = 0 val stack = IntArray(100) var cursor = 0 for (num in ingredient) { if (num == or..

2024.03.22 게시됨

포스팅 썸네일 이미지

코딩테스트

프로그래머스 체육복 Kotlin 빠른 답안

https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Edge 케이스 분석 1. 여벌 체육복이 있지만, 도난 당한 학생은 다른 학생에게 빌려줄 수 없다. 예를 들어 5, [3,4], [4,5]의 경우 3번 학생이 4번 학생으로부터 체육복을 빌릴 수 있으면 정답은 5명이다. 하지만 4번 학생은 여벌 체육복을 도난 당했기에 다른 학생에게 빌려줄 수 없다. 비록 5번 학생으로부터 빌릴 수 있더라도 말이다. 2. greedy시 정렬 여부 확인하기 greed..

2024.03.18 게시됨

포스팅 썸네일 이미지

코딩테스트

프로그래머스 삼총사 다르게 풀어보기 with Kotlin

https://school.programmers.co.kr/learn/courses/30/lessons/131705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 3중 For문을 이용해 Brute Force 방식으로 풀 수 있으며, 검색해보면 나오는 대다수의 코드는 그렇게 풀고 있다. 다른 방법은 없을까? Cursor 이용하기 아이디어의 시작은 이러했다. 1. number를 정렬한다. 2. 왼쪽에는 가장 작은 값, 오른쪽에는 가장 큰 값이 오므로, cursor를 이용해서 탐색할 수 있겠구나! class Solution { fun solution..

2024.03.03 게시됨

코딩테스트

전역 변수를 활용해서 시간 단축하기

https://school.programmers.co.kr/learn/courses/30/lessons/12943 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제에 대한 해답은 주어진 문제의 로직을 따라 작성하면 어렵지 않게 구할 수 있다. 다만 8,000,000에 3을 6번 곱하면 2,147,483,647을 넘기 때문에, Long으로 변환한 후 계산해줘야 한다. class Solution { fun solution(num: Int): Int { var answer = 0 var n = num.toLong() while (n != 1L && ans..

2024.02.06 게시됨