본문 바로가기

c++

(77)
프로그래머스 : N으로 표현 c++ https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr DP는 진짜 너무 어렵다 풀이 1. 연산 방식으로 인한 count이기 때문에, 배열을 사용한 DP가 아닌, 함수내에서 answer를 업데이트 하는 방식을 사용 2. 연산 결과가 정답과 일치하면, 숫자를 사용한 횟수를 answer와 비교 3. for문을 사용하는 이유는 ex) 55를 쓴다고 그러면 숫자 2개를 쓰는거니까, cnt에 이 자릿수만큼 더해줘야 한다. #include #include #include using namespace std; int answer = numeric_limits::max(); void dp(int goal,in..
프로그래머스 : 큰 수 만들기 c++ https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 후기 진짜 뇌가 다 굳은거 같다. 이해가 안되서 다른분들 블로그 3개 진짜 정독한듯 풀이 1. 숫자의 길이가 n일때 k개를 짤라버리는 거니까 최종 출력의 길이는 n-k다. -> 앞에 K개를 다 짤라먹을 생각을 하고 0부터 시작해서 K+1 개씩 계속해서 젤 큰 수를 찾는거다. -> 총 선택해야할 숫자의 갯수는 n-k ex) 1) 0~k+1 중에 가장 큰 숫자 택 1 중간에 가장 큰 숫자의 index가 3이였다고 치면 2) 4~K+2 까지 중에 큰 숫자 택 1 -> 만약 k+1번이 젤 큰 숫자였다해도 상관없다. 3) 이렇게 되면 이 직후 k+..
프로그래머스 : 조이스틱 c++ https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 풀이 1. 기본 틀은 A로 이루어져 있다. -> 그래서 name의 길이랑 동일한 string을 data라는 이름으로 생성 2. 문자를 바꿀 수 있는것은 하나씩이므로 현재위치에 문자 수정 -> 다른 칸으로 이동 -> 그 칸 수정 -> 반복 3. 여기서 중요한건, 한칸을 수정한 후, 오른쪽으로 갈지, 왼쪽으로 갈지를 정해야 한다. -> 이거를 하..
프로그래머스 : 위장 C++ https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 풀이 1. 모든 종류의 옷을 한벌씩 입어야되는것이 아닌, 단 한개의 옷이라도 입으면 되는 것이 핵심! 2. 종류별로 옷의 갯수를 map을 활용해서 정리 3. 각 옷을 안입는 경우를 포함하기 위해서, 경우의 수를 구할때 각 옷종류의 갯수마다 +1 4. 모든 옷을 안입는 경우 한가지를 최종적으로 -1 #include #include #include using namespace std; int solution(vector clothes) { int answer = 1; map m; for(int i=0;i
프로그래머스 : 전화번호 목록 C++ https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 아래 블로그를 보고 참고를 조금 했다. https://velog.io/@redgem92/C%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Level-2-%EC%A0%84%ED%99%94%EB%B2%88%ED%98%B8-%EB%AA%A9%EB%A1%9D String을 사용한다는 점을 활용해서 sort하는거에서 ..
알고리즘 1. find string.find(찾는 거) 있다면 -> 찾는 문자열의 시작 지점 없다면 -> -1 리턴 2. unordered map 1) [ ] -> 맵에서 key를 통햇 value를 지정하는 operator map[key] = value 2) find( key ) -> key값에 해당하는거 찾기 3) insert( {key,value} ) 4) 탐색방법 key : first value : second 3. sort(배열.begin(), 배열.end(),cmp) - cmp에 bool로 sort 방식 지정 가능 - 가장 기본은 > : 내림 차순 < : 오름 차순 4. 주로 모든 작업을 들어온 순서랑은 무관하게 효율적으로 처리? 이런거면 작업의 index를 하나를 추가적으로 관리하는게 효율적이다. 5...
상속 1. child는 mother class에 구현되어 있는 함수랑 동일한 이름의 함수 선언 가능 2. protected -> 자식은 이 변수 접근 가능! -> private 써서 자식이 부모꺼 접근하려면, 그냥 setValue 등등 사용 : 안 헷갈리게 Mother::setValue() -> 이렇게 하는거 추천 this->setValue()도 가능 3. child class가 생성될떄는 mother의 생성자 같이 호출한다. -> 그래서 child constructor 만들고 싶으면 꼭 mother의 기본 constructor 만들고 만들자!!! -> child class가 메모리 할당 받을때, mother class꺼 다 수용할 만큼의 크기 할당 받음 4. Destructor는 자식 -> 부모 순으로 실행..
객체간 관계 1. Composition 구성관계 -> 이미 전체에 속해있는 객체 자체가 다른 클래스에서 사용 못한다는 뜻! -> 속해있는 객체의 틀인 class는 재사용 가능 2. Aggreation 관계 -> class의 인자를 주소로 받으면! 여러 클래스와 함께 공유 -> 당연히 인자 업데이트할때도 주소로 받아야된다 -> 사용할때는 뭐 당연하게 ' -> ' 사용, 출력시에도 ' *인자' 방식으로 - 다만 분산처리 시에는 이 방법 사용 못한다! 3. Association 제휴 1) class 둘이 서로 friend 2) 서로 인자를 포인터로 가지고 있어야됨 3) 근데 그냥 이거보다, class 묶어쓸 새로운 calss를 만드는게 편하드라 4. 의존 : class 레벨에서는 몰라도 되고, 구현할때만 헤더 includ..