728x90
반응형

문제풀이(Problem Solving) 326

프로그래머스, N개의 최소공배수 : C++ [CPP]

이것도 그냥 수학이다. 유클리드 호제법을 이용하면 된다. 간략하게 말해서 G(A,B) = G(B, A%B)와 같다. https://programmers.co.kr/learn/courses/30/lessons/12953 #맞은 풀이 #include #include #include using namespace std; //최소 공배수를 구하기 위해 최대공약수를 알아보자 //유클리드 호제법 사용 int max(int a, int b){ //a가 b보다 크다는 가정 if(a n개의 원소면 n번 연산 while(size){ def = min(def,arr[size-1]); //현재까지 계산된 최소 공배수와 다음 원소와의 최소공배수 size--; } // 끝나면 def가 모든 수에 대한 최소공배수임. answer ..

프로그래머스, 예산 : C++ [CPP]

Greed 하게 풀었는데 Greed를 시도해보니 맞았다. 보다는 Greed를 쓴 이유를 알면 좋다. https://programmers.co.kr/learn/courses/30/lessons/12982?language=cpp #맞은 풀이 #include #include #include #include #include using namespace std; int solution(vector d, int budget) { int answer = 0; sort(d.begin(), d.end()); // 오름차순 정렬. //Greed 방법 적용 -> 가장 적은 부서부터 적용 for(int x : d){ if(x

프로그래머스, 3진법 뒤집기 : C++ [CPP]

우리가 쉽게 하는 n진법 변환을 컴퓨터로 어떻게 표현할까? 생각하면 된다. 역순인 이유도 있었다. https://programmers.co.kr/learn/courses/30/lessons/68935?language=cpp 배운 점 스택으로도 넣어서 꺼내쓸 수 있지만 나는 string으로 연습해봤다. #맞는 풀이 #include #include #include #include using namespace std; //n은 1억 이하인 자연수 //3진수 만드는법 3으로 나누면서 몫과 나머지 조사. int solution(int n) { int answer = 0; int div = 0; //몫 int res = 0; //나머지 string s = ""; div = n; // 초기값. while(div>=3..

프로그래머스, 폰켓몬 : C++ [CPP]

쉽게 풀 수 있지만 문제 해석을 잘해야 한다. https://programmers.co.kr/learn/courses/30/lessons/1845?language=cpp 배운 점 Set은 Unique함 (정렬할 수도 안할 수도 있음) Set의 원소 추가는 Insert로 함 #맞는 풀이 #include #include using namespace std; int solution(vector nums) { int answer = 0; set s; // unique한 값을 넣음 int size = nums.size(); //set으로 바꾸어서 unique한 값을 만든 뒤 //각 종류마다 한마리씩 가져가는 것이 가장 다수의 종류를 가져갈 수 있음 for(auto x : nums){ s.insert(x); } /..

프로그래머스, 체육복 : C++ [CPP]

이건 내가 푼 것보다 다른 사람이 훨씬 훨씬 잘풀었다. 참고해서 설명해보자 https://programmers.co.kr/learn/courses/30/lessons/42862?language=cpp #맞는 풀이 #include #include using namespace std; int student[35]; // 학생 배열(체육복의 수가 value) int solution(int n, vector lost, vector reserve) { int answer = 0; for(int i : reserve) student[i] += 1; // 여벌 체육복을 가지고 있는 학생 for(int i : lost) student[i] += -1; // 체육복을 잃어버린 학생 //위 for문을 거치면 결국 빌려줄 ..

프로그래머스, 모의고사 : C++ [CPP]

어렵진 않다만 그냥 여러가지 해줘야 해서 귀찮았다. https://programmers.co.kr/learn/courses/30/lessons/42840?language=cpp #맞는 풀이 #include #include #include using namespace std; int c1[5] = {1,2,3,4,5}; int c2[8] = {2,1,2,3,2,4,2,5}; int c3[10] = {3,3,1,1,2,2,4,4,5,5}; vector solution(vector answers) { vector answer; vector score; int cnt1 =0; int cnt2 =0; int cnt3 =0; int max = 0; for(int i = 0; i

프로그래머스, 완주하지 못한 선수 : C++ [CPP]

어렵다기 보다.. 그냥 해시로 할까 생각이 안나면 못푸는 그러한.. 것? https://programmers.co.kr/learn/courses/30/lessons/42576 십만 * 십만해봐야 100억이지..라고 생각하면서도 왜 가볍다고 생각했는지..ㅎ 즉, 다른 방법을 찾아야했다. #틀린 풀이 #include #include #include using namespace std; string solution(vector participant, vector completion) { string answer = ""; int length = completion.size(); for(int i = 0; i 0) { //answer에 테이블에 key값을 넣음 answer = pair.first; break; ..

프로그래머스, 카카오프렌즈 컬러링북 : C++ [CPP]

어렵지 않았다. 다만 전역변수 초기화를 안해서 20분동안 헤맸다. https://programmers.co.kr/learn/courses/30/lessons/1829# #맞는 풀이 #include #include #define X first #define Y second int dx[4] = {1,-1,0,0}; int dy[4] = {0,0,1,-1}; using namespace std; int visited[100][100]; queue q; // 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요. vector solution(int m, int n, vector picture) { for(int i = 0; i

프로그래머스, 숫자 문자열과 영단어 : C++ [CPP]

어렵지는 않지만 그렇다고 단순하지도 않다. 다만 정규 표현식을 아느냐.. 모르느냐에 따라 풀이 시간이 달라진다. 그냥 문자열이 주어졌을 경우는.. 거의 정규표현식이 좋다고 생각하면 된다. https://programmers.co.kr/learn/courses/30/lessons/81301 #맞는 풀이 #include #include #include using namespace std; int solution(string s) { // 원하는 패턴의 문자열을 다른 문자열으로 치환 //regex_replace (대상, 정규표현식 객체, 치환 결과) s = regex_replace(s, regex("zero"), "0"); // "zero"는 다 "0"으로 바꾼다는 뜻 s = regex_replace(s, r..

728x90
반응형