자바 56

[프로그래머스/자바] 주차 요금 계산_92341

문제 및 코드 1. 생각 // 생각 // map // 구현 // fees 값 저장 // records를 돈다 // 각 원소는 split해서 시간, 번호, 입출차를 구한다 // map에서 번호를 찾는데 값이 있다 // map의 상태값이 IN이다 // map의 누적 시간을 지금들어온 시간과 map에 있는 시간의 차이로 저장 // map의 시간을 지금 들어온 시간으로 저장 // map의 상태를 지금 들어온 상태로 저장 // map에서 번호를 찾는데 값이 없다 // map에 해당 번호의 상태에 맞는 값들을 넣는다 // map을 돈다 // 상태가 in // 누적 시간에 23:59와 저장된 시간 차를 더함 // 누적 시간에 따라 요금 계산 // 차량번호와 요금을 같이 저장 2. 회고 로직 생각은 무난하게 했는데 구..

코딩테스트 2023.08.25

[프로그래머스/자바] n진수 게임_17687

문제 및 코드 1. 생각 // 생각 // 문자열 다루기 및 진법 변환 // 구현 // while(true) 로 돌기 시작 // 숫자 0부터 시작해서 해당 숫자를 특정 진법으로 바꾼 결과를 구한다 // 위의 결과를 돈다 // 순서를 가리키는 index를 참여 인원수로 나눈 나머지가 0이면서 m == p // 말해야 하는 숫자에 추가 // 순서를 가리키는 index를 참여 인원수로 나눈 나머지가 p랑 같다 // 말해야 하는 숫자에 추가 // index 1 증가 2. 회고 혼자 이상하게 이해해서 처음에 테스트 케이스 결과가 틀린 거 아니야? 이럼 근데 내가 잘못 이해한 거였음 몇몇 메소드가 기억이 안 나 참고를 했음.. 그 이외 로직을 구현해내는 부분에 있어서는 엄청 어렵지는 않았다. 아 중간에 break 넣..

코딩테스트 2023.08.25

[프로그래머스/자바] 압축_17684

문제 및 코드 1. 생각 // 생각 // map // 구현 // A~Z 까지 map에 저장 // msg를 돈다 // map에서 발견할 수 없는 문자열을 발견할 때까지 돈다, 만약 발견 // 해당 문자열보다 길이가 1 작은 것을 map에서 찾아 인덱스 저장 // 해당 문자열 map에 저장 // 해당 문자열보다 길이가 1 작은 것을 msg에서 삭제 // 발견하지 못하거나 맨 끝이면 그냥 인덱스 찾아서 저장 후 msg에서 삭제 2. 회고 기본 아이디어는 잘 생각해냈는데 그걸 구현하는데서 사소하게 하나만 잘못해도 정답이 나오지 않아 애를 먹음 index처리하는 데 있어서... 하나씩 해 보면서 start와 end index의 범위를 지정해야 하는 걸까? 아이고 헷갈려 3. 체크 풀이 횟수 시간 정답 여부 참고 ..

코딩테스트 2023.08.24

[프로그래머스/자바] k진수에서 소수 개수 구하기_92335

문제 및 코드 1. 생각 // 생각 // n을 k 진수로 바꾼 후 돌면서 조건에 맞는 소수를 찾는다 // k진수로 바꾸는 메소드 // String 다루기 // 구현 // n을 k진수로 바꾼다 // 위의 결과를 String으로 바꾼 후 0을 기준으로 split한다 // 위의 결과 배열을 돌면서 소수 판단 2. 회고 소수로 만들어진 수가 int형을 넘어갈 것을 예측하지 못했음. 소수 확인할 때 제곱근까지만 확인하는 걸로 구현하지 않아 시간초과 발생... 그외 다른 부분은 괜찮았음 3. 기억 소수 확인할 때 제곱근까지만 확인해도 되는 이유 제곱근보다 큰 수가 소수의 약수인지, 즉, 제곱근보다 큰 수로 소수가 나누어 떨어지는지는 제곱근보다 작은 수로 나누어 떨어지는 지로 이미 확인할 수가 있다. 왜냐면 약수의 ..

코딩테스트 2023.08.24

[프로그래머스/자바] 뉴스 클러스터링_17677

문제 및 코드 1. 생각 // 생각 // 문자열 처리 // 구현 // str1과 str2 각각을 돈다 // 돌면서 2개씩 잘라서 문자열을 추출한다 // 추출한 문자열이 영문자로만 되어 있는지 확인 // 영문자를 모두 소문자나 대문자로 바꿈 // 완성된 문자열을 배열이나 리스트에 추가 // 교집합 사이즈 구하기 // str1과 str2에서 구한 리스트를 각각 돌면서 각각의 map으로 개수 저장 // 두 맵에 같은 원소가 있으면 더 작은 값이 교집합 개수 // 합집합 사이즈 구하기 // 위에서 구한 map 활용 // 두 맵에 같은 원소 있으면 더 큰 값이 합집합 개수 // 같은 원소 아니면 개수만큼 개수에 더하기 // 위에서 구한 교집합 사이즈 / 합집합 사이즈 * 65536 결과의 정수부가 답 2. 회고 ..

코딩테스트 2023.08.18

[프로그래머스/자바] 튜플_64065

문제 및 코드 1. 생각 // 생각 // 1개만 있는 게 맨 처음, 2개만 있는 것 중 1개 있는 거 뺀 게 두 번째... 이런 식으로 순서가 된다 // 구현 // 문자열을 집합 단위로 쪼갠다 // },{ 로 split 한다 // 맨 앞 {{ 제거, 맨 뒤 }} 제거 // 원소 개수 1개인 것부터 확인하면서 원소 추가 // 집합에 원소가 없다 // 집합에 원소를 넣고 list에 원소 추가 // 집합에 원소가 있다 // 패스 2. 회고 어떻게 답을 이끌어내면 되겠다는 쉽게 생각이 났는데 문자열을 어떻게 처리하는지 엄청 고민했다.. split가 생각이 나긴 했는데 이게 맞나..? 혼자 자기 의심... 근데 맞았음 그런데 맨 앞과 맨 뒤 남는 문자 처리 어떻게 하지? 고민했는데 replace라는 좋은 메서드가..

코딩테스트 2023.08.17

[프로그래머스/자바] 할인 행사_131127

문제 및 코드 1. 생각 // 생각 // discount를 돌면서 map으로 각 개수 저장한 후 want의 항목별 개수와 비교해서 확인하며 가능하면 답 1 증가 // 구현 // want와 number를 돌면서 map으로 항목별 개수 저장 // 범위가 10이 되게 discount를 돌면서 항목별 개수 저장 // want의 개수와 discount의 항목별 개수 비교하며 discount 개수가 크거나 같으면 1 증가 아니면 패스 2. 회고 map으로 하는 방법이 생각나서 이걸로 했는데 비효율적인 것 같다... 다른 글들 보니까 슬라이딩 윈도우를 사용한 경우가 있더라 3. 체크 풀이 횟수 시간 정답 여부 참고 여부 1 1시간 O X

코딩테스트 2023.08.09

[프로그래머스/자바] 캐시_17680

문제 및 코드 1. 생각 // 생각 // 도시이름을 돌면서 캐시에 있는지 없는지, 자리 있는지 등 확인한 후 하나 거칠 때 마다 상황에 맞게 실행시간 더하기 // 캐시를 만들어야 하는데 큐를 이용해서 만들 수 있다 // 구현 // 큐 만들기 // 도시이름 돌기 // 만약 큐에 해당 도시가 없으면서 캐시크기 안 넘쳤다 // map에 해당 도시 넣고 횟수 1로 만들기 // 정답 5 더하기 // 큐에 해당 도시가 없으면서 캐시크기 넘쳤다 // 최근에 가장 적게 사용된 거 하나 빼고 해당 도시를 넣는다 // 정답 5 더하기 // 큐에 해당 도시가 있다 // 정답 1 더하기 2. 회고 엄청 어렵지는 않았는데 뭐에 홀렸는지 왜 큐라는 생각이 바로 안 들었지..? 막 우선순위큐 해야 하는 거 아니야? 이러다가 놓쳤네..

코딩테스트 2023.08.08

[프로그래머스/자바] 행렬의 곱셈_12949

문제 및 코드 1. 생각 // 생각 // 행렬의 곱은 한 행렬의 행과 다른 행렬의 열을 각각 곱한 값 // 구현 // 주어진 arr1과 arr2의 길이를 바탕으로 정답 배열을 선언한다 // 첫 번째 for문에서 arr1의 열만큼 돈다 // 두 번째 for문에서 arr2의 행만큼 돈다 2. 회고 행렬의 곱셈을 어떻게 하는지 생각이 안 나서 참고함.. 그리고 이중 for문까지는 생각이 났는데 삼중 for문은 생각이 안 났음 삼중 for문의 인덱스가 아직 잘 이해가지 않음 3. 기억 행렬의 곱은 기역(ㄱ)자로 곱하면서 이루어진다. 2행 3열 * 3행 2열 이렇게 한 행렬의 열과 다른 행렬의 행이 같아야 곱셈 가능. 이 행렬 곱셈의 결과는 2행 2열 4. 체크 풀이 횟수 시간 참고 여부 정답 여부 1 1시간 O X

코딩테스트 2023.08.08