본문 바로가기

프로그래머스11

[프로그래머스 1 / c++] 숫자 문자열과 영단어 -map 맵을 이용해서 푸는 문제인건 바로 알 수 있었다 하지만 매칭되지 않으면 빈문자열이 나온다는 점과 매칭되지 않으면 문자를 변수에 저장하고 다음 문자와 합쳐서 합쳐진 변수로 맵과 비교하는 것을 반복하는 점, map 을 외부 함수로 선언 시, 맵을 참조 가능하려면 함수 호출을 해야 되는 점... 많이도 몰랐다 맵은 외부에서 함수로 따로 초기화 외에도 함수 내부에서 초기화 할 수도 있다 #include using namespace std; unordered_map mapi; void cov(){// mapi 을 초기화한 참조데이터를 함수로 따로 만들어 두었다 mapi["zero"]="0";// 이 경우 mapi 이 전역 변수 이므로 mapi["one"]="1";// 여러 함수에서 호출해서 mapi을 사용가능하다.. 2022. 6. 22.
[프로그래머스 1 / c++] 비밀 지도 처음 설계는 n개 자리의 2진수를 구해서 그 이진수의 1과 0을 각각 기호로 바꿔준다는 로직이었는데... c++은 의외로 2진수를 나타내기가 힘들었다. 2진수를 구해서 나타내려고 해도 상수가 아닌 n의 자리 까지의 2진수를 구하는 방법은 찾기 힘들었다. 이진수를 bitset 이라는 함수를 이용해서 나타낼 수 있다고 하여 열심히 해보았지만 자리수가 상수여야 가능하지 변수로 주어지면 런타임 에러가 났다. 어떻게 방법을 찾느라 몇시간째 찾아보았지만 결국은 포기... 그냥 나눌때마다 나오는 나머지 값을 기호로 바꾸어 string에 붙여주어 만들면 쉽게 풀리는 문제였다 c++ 에서 2진수로 변환은 생각보다 까다로운 것 같다... 일단은 쉽게 생각하자 그래야 풀수있는게 많다! #include using namesp.. 2022. 6. 22.
[프로그래머스 2 / c++] 전화번호 목록 - 해시 해쉬를 이용해서 풀라는 문제 같은데, 정렬을 사용 후 앞뒤만 비교하는 것이 더 효율적인 함정 문제이다 하지만 배우는 입장에서는 두 경우 모두 배울점이 많았다 정렬은 sort 후 다음 요소에 이전 요소를 find하여 0인지로 접두어를 찾는 아이디어!(없으면 ::npos가 나올 것이다) 해시는 아직 사용 경험도 부족한 만큼 원리이해와 key값이 없을때 key가 map에 추가되고 0의 value를 갖는점, substr 을 루프에 활용하는 아이디어 등을 배울 수 있었다 #include using namespace std; bool solution(vector phone_book) { // 1. 정렬 후, 뒤의 숫자에서 앞의 숫자 find 하기 // 오름차순 정렬 후, 뒤의 숫자가 앞의 숫자를 포함하는지 확인. .. 2022. 6. 21.
[프로그래머스 1 / c++] 체육복 그리디 알고리즘을 이용하는 문제이다 탐욕이라는 말처럼 가장 큰것들을 골라서, 가장 작은 것들을 골라서, 가장 빨리 끝나거나 가장 오래 걸리는 것을 골라서 이게 좋아보이네! 하고 선택해서 풀어나가는 것을 그리디 알고리즘이라고 한다 가장 큰 수 들을 우선 선택하여 최소한의 개수로 목표 수를 만들기 낼 수 있는 것 중 하나씩 고를때 최대값들만 골라서 최대값 만들기 가장 빨리 끝나는 수업 순으로 나열하여 수강 수를 최대로 하기 벌금이 다른 여러명이 벌금을 나눠 낼때 벌금이 작은 사람들 순으로 나열하여 총 벌금을 최소로 하기 등등이 모두 그리디 알고리즘의 예시라고 한다 정말 가장 큰거! 가장 작은거! 가장 빨리 끝나는거! 가장 오래 걸리는거! 처럼 욕심부리는 것 같긴하다 처음 풀때 같거나 옆에 있음 인덱스를 양쪽.. 2022. 6. 20.