본문 바로가기

c++/프로그래머스

(29)
프로그래머스 : [1차] 뉴스 클러스터링 c++ https://programmers.co.kr/learn/courses/30/lessons/17677?language=cpp# 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 풀이는 나중에... #include #include #include using namespace std; vector v1,v2; int solution(string str1, string str2) { int answer = 0; //일단 만약 대문자면 다 소문자로 바꾸고 시작하자 for(int i=0;i
백준 2493 : 탑 c++ https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 구글 참조 해서 풀었다 - stack은 너무 어렵다 #include #include #include using namespace std; int main() { int num; scanf("%d", &num); int count = 0; stack s; pair p; int input; while (count < num) { scanf("%d", &input); p = make_pair(coun..
프로그래머스 : 등굣길 c++ (DP 연습) https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 풀이 일단 최단경로의 갯수이기 때문에 DP로 푸는 방식이 맞다. + 사방으로 움직이는거도 아니고, 오른족과, 아래쪽만이라 더더욱 DFS,BFS로 풀 이유가 없다. 1. DP이기 때문에 map을 만드는게 아니라, 출발지에서 해당 좌표로 가는 최단거리의 갯수를 저장 2. find 함수를 사용할건데, pair를 사용해서 코드를 간략하게 할거라서, puddl..
프로그래머스 : 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하는거에서 ..