본문 바로가기

프로그래머스22

프로그래머스 lv2 - 압축 (자바) [2018 KAKAO BLIND RECRUITMENT] 문제프로그래머스 lv2 - 압축풀이알고리즘이라기 보다는 자료구조를 잘 사용할 줄 알아야 하는 문제색인 번호와 그에 맞는 문자열을 hashmap에 저장msg의 문자마자 그 다음 문자, 그 다음 문자... 마지막문자까지 더해가며 더 긴 문자열이 사전에 있는지 체크-> 더 긴 문자열이 있다면 가장 긴 길이의 문자열, 그 문자열의 길이, 그 문자열의 끝부분의 인덱스 갱신그 다음 순서로 오는 문자들을 다 더해가며 가장 긴 문자열을 찾았다면 그 문자열을 답에 추가하고 msg에서 삭제-> 문자열을 msg에서 삭제할 때 substring() 사용어려웠던 점순차적으로 다음 문자를 더해가며 사전에 있는지 체크할 때 사전에 있으면 거기서 그것보다 긴 문자열은 없다고 판단하여 탐색을 종료했다. 그랬더니 반복문이 끝나지 않는 .. 2024. 6. 12.
프로그래머스 lv2 - 파일명 정리 (자바) [2018 KAKAO BLIND RECRUITMENT] 문제프로그래머스 lv2 - 파일명 정리풀이정렬과 문자열에서 원하는 문자열을 추출할 수 있는지를 묻는 문제정렬람다식을 이용해 배열을 정렬문자열 추출head 부분 추출 : split("[0-9]") 정규표현식을 활용해서 숫자를 기준으로 문자열을 나눔number 부분 추출 : 뽑은 head 부분 다음부터의 문자열에서 숫자를 체크하기 위해 substring()으로 head 부분을 잘라냄코드처음 제출한 코드 ( 통과하긴 했지만 코드가 맘에 들지 않았음 )import java.util.*;class Solution { public String[] solution(String[] files) { Arrays.sort(files, (o1, o2) -> { String h1 = o1.. 2024. 6. 11.
프로그래머스 lv2 - n진수 게임 (자바) [2018 KAKAO BLIND RECRUITMENT] 문제n진수 게임풀이진법 변환을 통해 변환된 숫자를 문자열로 바꾼다.바꾼 문자열 길이만큼 순서별로 호출하는 숫자를 체크한다.튜브 순서인 경우 t를 감소하고 답에 해당 숫자를 추가한다.t가 0이 되면 종료한다.참가 인원이 모두 하나씩 숫자를 말해야 튜브의 순서가 한 번 지나가는 것이다.t개의 숫자를 미리 구하기 위해 (참가 인원 * 미리 구할 숫자 개수) 만큼의 숫자 변환을 해놓는다.진법 변환은 Integer.toString(int i, int radix) 함수를 사용숫자 i를 radix에 해당하는 진법으로 변환하는 함수단, 16진수의 10 ~ 15인 A,B,C,D,E,F는 소문자로 변환해주기 때문에 toUpperCase()로 대문자로 바꿔줘야 함어려웠던 점튜브의 순서를 체크하는 로직에서 살짝 로직 실수를 .. 2024. 6. 9.
프로그래머스 lv2 - 후보키 (자바) [2019 KAKAO BLIND RECRUITMENT] 문제프로그래머스 lv2 - 후보키풀이백트래킹을 통해 전체 후보키 조합을 만듬ex) column이 4개인 경우 1,2,3,4,12,13,14,23,24,34,123,124...만든 후보키마다 후보키가 될 수 있는지 체크유일성 체크map 자료구조를 사용하여 중복된 후보키가 존재하는지 체크최소성 체크이미 14인 후보키가 있을 때 134 키가 후보키가 되는지 체크하려면 234중 14가 있으면 안됨어려웠던 점백트래킹까지는 구현했지만, 후보키의 중복 처리를 위해 유일성을 체크할 때 column 값들을 전부 string으로 합쳐서 만들 생각 하지 못함현재 후보키를 백트래킹을 통해 찾은 인덱스들을 문자열로 바꿔서 합친 형태로 후보키로 만들어 처리할 생각 하지 못함-> 백트래킹을 통해 찾은 후보키 조합 인덱스가 1,3인.. 2024. 6. 8.