it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 32. 선택정렬
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]오름차순 선택 정렬을 구현할 거라면 이중 포문을 돌면서 정렬되지 않은 부분 중 가장 작은 값을 찾고, 그 값을 정렬되지 않은 부분의 가장 앞 부분의 값과 변경해주면 된다.내림차순 선택 정렬을 구현할 거라면 가장 큰 값을 찾아서 변경해주면 된다. [나의 코드]#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); int n; cin >> n; vector table(n); for (int i = 0; i > table[i]; for (int i = 0; i table[j]) min = j; } int tmp = table[i]..
it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 31. 탄화수소 질량
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]문제를 쉽게 풀려고 생각하는 자세가 진짜로 필요하다.필요 이상으로 너무 복잡하게 풀었다. [나의 코드]#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); string input; cin >> input; int numC = 0; int numH = 0; bool isC = true; char prev = 'C'; for (int i = 1; i   [강의 코드]#include #include #include #include #include #include using namespace std;int main() { char a[..
[집중 문제] it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 30. 3의 개수는?(large)
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]그냥 완전 수학 이용해서 푸는 문제였다.문제 풀이에 사용되는 변수는 cur, left, right, cnt, k, res 이다.각 자리수를 기준으로 해서 res 에 값을 추가하는 식으로 문제를 해결해야 한다.left 를 구하는 공식: left = n / (k * 10)cur 를 구하는 공식: cur = (n / k) % 10right 를 구하는 공식: right = n % k 일의 자리수가 3인 숫자의 개수를 구하자일의 자리수를 기준으로 할 때는 left 가 536, cur 가 7, right 가 0, k 가 1 이다.cur 값이 3보다 크므로 000 부터 536 까지 모두 포함된다.000 부터 536 일 때까지 총 왼쪽에 있는 수의 개수는 537 개이다. 일의 자리수 오른쪽으로는 아무것..
it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 29. 3의 개수는?(small)
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]시간제한이 없는 문제라 원래 풀던 것처럼 2중 반복문을 사용해도 문제가 없다.문제가 쉬워서 딱히 기억할 만한 내용이 없다. [나의 코드]#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); int n; cin >> n; int count3 = 0; for (int i = 1; i 0) { if (tmp % 10 == 3) { count3++; } tmp /= 10; } } cout   [강의 코드]#include #include #include #include #include #include using nam..
it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 28. N!에서 0의 개수
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]소인수분해를 이용하여 해결하면 되는 문제이다.일의 자리부터 연속적으로 ‘0’이 몇 개 있는지 구하는 것은 2와 5의 개수를 센 다음 둘 중 더 작은 값을 출력해서 구현할수 있다.일의 자리부터 연속적인 0의 개수는 10이 얼마나 곱해졌나로 판단할 수 있기 때문. [나의 코드]#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); int n; cin >> n; vector table(n+1); int count2 = 0; int count5 = 0; for (int i = 2; i count5) ? count5 : count2); ..
[집중 문제] it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 27. N!의 표현법
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]소인수 분해를 이용해서 풀면 되는 문제이다.만약 7! 이면 7*6*5*4*3*2*1 인데, 여기서 각각의 수를 소인수 분해해서 배열 요소를 ++ 해주는 식으로 풀면 되는 문제였다.7 이면 배열 인덱스 7번의 요소가 ++, 6이면 배열 인덱스 2 & 3번의 요소가 ++ 되는 식으로 구현해주면 되는 문제. [나의 코드]#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); int n; cin >> n; // [0]:0, [1]:1, [2]:2, ..., [n]:n vector table(n+1); for (int i = 2; i 1..
it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 26. 마라톤
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]쉬워서 딱히 기억할 만한 건 없다..아 배열을 하나만 쓰고도 해결할 수 있다는 건 기억해도 좋을 듯. [나의 코드]#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); int n; cin >> n; vector a(n); for (int i = 0; i > a[i]; vector b(n); for (int i = 0; i = a[i]) b[i]++; } } for (int i = 0; i   [강의 코드]#include #include #include #include #include #include using namesp..
it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 25. 석차 구하기
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]문제를 너무 어렵게 생각해서 풀이 시간이 오래 걸렸다. 쉬운 문제인데 왜 그랬는지 모르겠다. 그래도 생각할 시간을 충분히 가져서 내 기준 괜찮은 코드가 작성되었다. [나의 코드]#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); int n; cin >> n; vector table(n); vector grade(n); for (int i = 0; i > table[i]; for (int i = 0; i table[j]) grade[j]++; else if (table[i]   [강의 코드]#include #inclu..
it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 24. Jolly Jumpers
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]나는 배열의 값을 반복문 돌 때마다 ++ 해주고 반복문이 끝나면 비로소 배열에 0인 값이 없으면 YES 를 출력하는 식으로 풀었다.이 문제에서는 배열의 값이 0이 아닌게 있거나, 인덱스가 벡터 크기를 벗어나면 NO 를 출력하는 식으로 푸는 게 더 간결한 풀이 방법이었다.반복문 속 if 조건문에서 int(pre-now) 의 값이 벡터 범위를 벗어나는지를 판별하는 조건이 벡터 요소의 값이 1인지 아닌지를 판별하는 조건보다 더 먼저 나와야 한다. [나의 코드]반복문이 끝나고 나서야 비로소 결과값을 결정하는 풀이 방식#include #include #include #include #include #include using namespace std;int main() { ios_base::sync..
[집중 문제] it 취업을 위한 알고리즘 문제 풀이 입문 (With C/C++) 23. 연속 부분 증가수열
·
알고리즘&자료구조 공부/it 취업을 위한 알고리즘 문제풀이 입문 강의
[기억할 내용들]나는 배열로 값들을 이미 저장해놓고 풀었는데 오히려 이게 독이 되었다. 반복문 돌면서 그냥 값 하나씩 받아오고 이 받아온 값을 조건문 돌려서 바로 로직을 수행하면 더 쉽고 간결하게 풀 수 있었다.이전값이랑 현재값을 비교해서 이전값이 현재값보다 작거나 같으면 cnt 를 증가시키고 이 cnt 가 max 값보다 크면 max 값을 cnt 값으로 업데이트 해주는 식으로 문제를 해결한다.이전값이 현재값보다 크다면 cnt 값을 다시 1로 바꿔주면 간단하게 풀 수 있다.항상!! 문제 풀 때마다 어떻게 하면 쉽게 풀 수 있을지를 생각하자!!!! [나의 코드]#include #include #include #include #include using namespace std;int main() { ios_b..