전체 글 161

[프로그래머스/자바] 주차 요금 계산_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

[프로젝트] 스프링에서 구글 GeoCoding으로 주소로부터 위도 경도 얻기

1. 왜 사용했나 프로젝트 기능 중에 사용자와 가게 사이의 거리를 구해야 했다. 그래서 거리 구하는 방법을 찾아보다 위도와 경도를 이용해서 두 위치 사이 거리를 구할 수 있음을 발견하여 적용해보고 싶었다. 이를 위해서는 주어진 주소를 위도 경도로 변환해야 했다. 그래서 구글에서 제공하는 api를 사용해 특정 주소를 위도와 경도로 변환하고자 하였다. 2. Google Cloud Console 사전 설정 1) Google Cloud Console로 이동하여 프로젝트 생성 2) Geolocation API 를 찾아 사용버튼 클릭 3) 카드 등록 90일 무료 사용 가능 결제는 90일 이후 본인이 더 원할 경우에 진행됨. 자동 결제 아님 4) 제한 사항 설정(안 해도 괜찮음) 5) API 복사해 놓기 3. 스프링..

[프로그래머스/자바] 압축_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