▼ Why ? 이번 문제도 이전 문제들처럼 문자열에서 문자들의 빈도수를 체크해 해결하는 문제이고, 문자의 빈도수를 다루는 문제들에 익숙해지기 위해 풀어보았다. ▼ 팰린드롬 (Palindrome) 문제 정보 문자열이 주어지면 해당 문자열의 문자들을 가지고 만들 수 있는 최대길이 팰린드롬을 만들고 그 길이를 구하세요. 문자열은 소문자로만 이루어져 있습니다. 만약 "abcbbbccaaeee" 가 주어진다면 만들 수 있는 가장 긴 팰린드롬은 "ebbcaaacbbe"이고 답은 11입니다. 입출력 예 제한사항 s의 길이는 1,000을 넘지 않습니다. 어떻게 해결해야 할까? 문자들의 빈도수를 다루는 문제이기 때문에, 일단 key(문자)-value(빈도수)를 쌍으로 하는 HashMap class의 instance(' ..
▼ Why ? 군복무 중에 1학년때 배웠던 C++을 복습할 겸 "윤성우의 열혈 C++ 프로그래밍"을 보며 코드를 따라 적고 개념을 주석으로 달아 Github에 올렸었는데, 이번에 언리얼엔진 게임 개발 프로젝트를 하면서 C++ 관련 개념을 찾아볼 때 참고하고자 해당 리포지토리 링크를 올려두려고 한다. ▼ Github Repository 링크 UykM/Study_Cpp (github.com) GitHub - UykM/Study_Cpp Contribute to UykM/Study_Cpp development by creating an account on GitHub. github.com
▼ Why ? 알고리즘 문제를 풀다가 ' Arrays.sort() ' 와 ' Collection.sort() ' 의 차이에 대해 찾아보게 되었고, 그 과정에서 배열(Arrays)가 "참조의 지역성"이라는 것이 적용된다는 사실에 대해 알게 되어 추가적으로 정리를 했었다. 그래도, 이 참조 지역성과 캐시(cache) 메모리라는 것에 대해선 따로 정리해두는 것이 좋을 것 같아 좀 더 공부하고 정리해보려고 한다. ▼ 캐시 메모리 (Cache Memory) Cache Memory ? 속도가 빠른 장치(CPU)와 느린 장치(RAM) 간의 속도차에 따른 병목 현상을 줄이기 위한 범용성 메모리이다. ➜ CPU(주기억장치)와 RAM(메인 메모리) 사이에 위치한다. ➜ CPU에 버금갈 정도의 속도를 갖고 있다. 캐시 메모..
▼ Why ?" [PCCP] 문자열과 해시함수 [4] " 를 풀면서 정렬하여 해결하는 방식을 생각하다가 ' Arrays.sort() ' 와 ' Collection.sort() ' 의 차이는 알아두는 것이 좋을 것 같아 찾아보게 되었다▼ Arrays.sort() 간단하게 배열을 정렬하는 메서드라고 할 수 있다함수의 내부를 살펴보면, 기본형(Primitive) 타입의 배열을 매개변수로 받았을 때, DualPivotQuicksort을 채택한 것을 알 수 있다// Arrays.javapublic static void sort(int[] a) { DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);} 🔻 DualPivotQuicksort는 두 개의 피..
▼ Why ? 이전 문제처럼 입력받은 문자열에서 문자들의 빈도수를 다루는 문제여서 먼저 풀어보려고 한다. ▼ 자기 분열수 문제 정보 자기 분열수란 배열의 원소 중 자기 자신의 숫자만큼 빈도수를 갖는 숫자를 의미합니다. 만약 배열이 [1, 2, 3, 1, 3, 3, 2, 4] 라면 1의 빈도수는 2, 2의 빈도수는 2, 3의 빈도수는 3, 4의 빈도수는 1입니다. 여기서 자기 자신의 숫자와 같은 빈도수를 갖는 자기 분열수는 2와 3입니다. 매개변수 nums에 자연수가 원소인 배열이 주어지면 이 배열에서 자기 분열수 중 가장 작은 수를 찾아 반환하는 프로그램을 작성하세요. 자기 분열수가 존재하지 않으면 -1를 반환하세요. 입출력 예 제한사항 nums의 길이 3
▼ Why ? 일단 해시함수를 사용하는 것에 익숙해지기 위해 관련 문제를 계속 풀어보려고 한다 ▼ 같은 빈도수 만들기 문제 정보 소문자 a, b, c, d, e로 이루어진 문자열이 주어지면 해당 문자열에서 a, b, c, d, e의 최소의 개수를 추가하여 a, b, c, d, e의 빈도수가 동일하게 되도록 해야 합니다. 동일빈도수가 되는 최소 추가 개수를 알파벳 a, b, c, d, e순으로 배열에 저장하여 반환하는 프로그램을 작성하세요. 만약 주어진 문자열이 "aaabc" 라면 빈도수는 a:3 , b:1, c:1, d:0, e:0 이고 최소 개수를 추가하여 동일 빈도수가 되게 하려면 b를 2개, c를 2개, d를 3개, e를 3개 추가하면 모두 빈도 수가 3개로 동일해집니다. 입출력 예 제한사항 문자열..