본문 바로가기

PROBLEM SOLVING7

프로그래머스 / 더 맵게 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 문제 요약 > 음식들의 매운 정도가 주어진다. 모든 음식의 매운 정도가 특정값 이상이 되도록 정해진 방법으로 섞자. 최소 몇 회를 섞어야 하는가? 풀이 > 힙(Heap)으로 분류되어있는 문제이고, 해당 문제에서는 음식들의 '맵기'라는 우선순위가 존재하므로, 우선순위 큐를 떠올렸다. 우선순위 큐는 일반적으로 힙을 이용해서 구현 가능하다. 힙은 부모노드.. 2022. 1. 31.
프로그래머스 / 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 문제 요약 > 마라톤에 참여한 선수들과 완주하지 못한 선수의 이름이 주어질때, 완주하지 못한 선수의 이름을 리턴하라. 풀이 > 문제 풀이에는 다양한 방법이 존재한다. 그러나 문제 분류가 해시로 되어있어서 해시로 풀어보기로 했다. 이 문제는 무려 5만 8천명 이상이 완료한 문제이고 난이도 또한 Lv1이기 때문에 굉장히 쉽게 풀이가 될거라고 생각.. 2022. 1. 25.
프로그래머스 / 문자열 압축 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제 요약 > 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현할 수 있다. 압축할 문자열 s가 주어질 때, 1개 이상 단위로 문자열을 잘라 압축하여 표현한 문자열 중 가장 짧은 것의 길이를 구하자. 풀이 > 처음엔 문제의 의도를 파악하기 조금 어려웠는데, 예시 5번을 보고 이해를 할 수.. 2022. 1. 18.
[C++] string 타입 문자열 split 구분자를 기준으로 문자열을 나누는 Java의 split 함수와 달리, C++에서는 기본적으로 제공하는 split 함수가 없다. 여러 개발 블로그를 참조해서 아래와같이 다양한 방법의 split이 가능하다는 것을 알았다. 숙지해두고 알고리즘 문제풀이시 활용해야겠다. iostringstream과 getline을 이용하는 방법 C++ 표준 라이브러리인 sstream을 추가하면 istringstream이라는 문자열에서 작동하는 스트림 클래스를 사용할 수 있다. #include #include #include #include using namespace std; int main() { string str = "Hello,Programming,World"; istringstream ss(str); string str.. 2022. 1. 17.
프로그래머스 / 숫자 문자열과 영단어 https://programmers.co.kr/learn/courses/30/lessons/81301?language=cpp 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 문제 요약 > 일부 자릿수가 영단어로 표현되어 있는 문자열에서 원래 숫자를 구하자. 풀이 > o로 시작하면 1, t로 시작하고 그 다음 문자가 w이면 2, 이런 방식으로 문제를 해결했다. int i, index, answer = 0; 이런식으로 초기화를 하는 경우 index는 0으로 초기화되지 않기 때문에 주의해야한다는 것을 알.. 2022. 1. 17.
프로그래머스 / 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 문제 요약 > 규칙에 맞지 않는 유저들의 아이디를 주어진 조건에 맞게 변환하자. 풀이 > 문제에서 제시한 순서대로 수행하였다. string 관련 stl을 잘 사용할수록 코드가 깔끔해지는 것 같다. (front, back, erase, empty 등) #include #include #include #include using namespace std; st.. 2022. 1. 17.
프로그래머스 / 로또의 최고 순위와 최저 순위 C++ 풀이 https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 문제 요약 > 로또 종이가 오염되었다. 당첨 가능한 최고 순위와 최저 순위를 구하라. 풀이 > 0의 개수(zeroCnt)와 맞은 숫자 개수(commonCnt)를 센다. 0~45까지의 인덱스를 가지는 배열(array)을 이용하여, 인덱스가 0인 경우 zeroCnt++를 수행하고 배열의 값이 2인 경우 commonCnt.. 2022. 1. 16.