728x90
반응형

코딩테스트 250

프로그래머스, 체육복 : 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..

프로그래머스, 로또의 최고 순위와 최저 순위 : C++ [CPP]

어렵지는 않지만 그렇다고 단순하지도 않다. https://programmers.co.kr/learn/courses/30/lessons/77484 #맞는 풀이 #include #include using namespace std; vector solution(vector lottos, vector win_nums) { vector answer; int curWin = 0; // 일치하는 숫자 int curZero = 0; // 0인 숫자 int min, max = 0; //최저, 최고등수 for(int a : lottos){ if( a == 0){curZero++; continue; } // 당첨번호가 지워져있다면 ++ for(int b : win_nums){ if( a == b){ curWin++; con..

백준, BOJ, 14502번, 연구소 : C++ [CPP]

음.. 생각은 빨리했는데.. 오래걸림.. 왜냐면.. 초기화를 잘못했다. 아...내 1시간반 https://www.acmicpc.net/problem/14502 그렇게 어렵지 않았다. 벽을 무작위로 세워야 하는 것을 이미 알기에.. Brute Force를 해야하는 것은 알았지만 그냥 백트래킹 복습삼아 적용했다. 가장 처음 제출한 풀이.. #include #include #include #define X first #define Y second using namespace std; int map[8][8]; int visited[8][8]; int dx[4] = {1,-1,0,0}; int dy[4] = {0,0,1,-1}; int N,M; int ans = 64; stack stk; // DFS 스택 ve..

백준, BOJ, 2805번, 나무자르기 : C++ [CPP]

우선 숫자가 큰 문제이다. 뭔가 크다. 어렵진 않았지만.. 그냥 오랜만에 푸니까 감이 안왔다. https://www.acmicpc.net/problem/2805 시간초과 될 것을 알면서도 brute force로 해봤다. #include using namespace std; int N,M; int maxi = 0; int sum; int arr[1000001]; int main(){ cin >> N >> M; for(int i = 1; i> a; arr[i] = a; if(a>=maxi){ maxi = a; } } maxi--; while(1){ sum = 0; for(int j = 1; j0) sum += temp; } if(sum>=M){ break; } maxi--; } cout > N >> M; f..

백준, BOJ, 1011번, Fly me to the Alpha Centauri : C++ [CPP]

어렵다기보다.. 수학으로 풀면 규칙 찾아내는 것이지만 다이나믹 프로그래밍 분류에 있어서 뭐 그렇게 풀려고 했으나..내 머리가 모자라서.. https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 우선 다이나믹프로그래밍으로 풀려고하는 방법은 큰 문제를 작은 문제로 쪼개는 것이다. 때문에 x부터 y라면 x 부터 y-1까지 가는 방법에서 y-1에 2로 도착하는 방법과 y-1에 1로 도착하는 방법이 있으니 이것을 잘..

728x90
반응형