알고리즘 문제풀이200 [백준 9375] 알고리즘 30일차 : 패션왕 신해빈 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 www.acmicpc.net 수학 C++ 접근방법 처음엔 조합으로 풀어보려고 했다. 옷을 한개 골랐을 때 ~ cnt(종류의 수)까지의 모든 의상의 조합을 구한 다음에 종류별 옷의 개수를 곱한 뒤 모든 값을 더하려고 했다. 하지만 코드가 너무 복잡해졌다. 포기 이 문제의 가장 큰 힌트는 그 종류의 옷을 안 입는 경우를 추가해서 경우의 수를 구하는 것이다. 그리고 마지막에 아무것도 안입는 경우(1개)를 빼면 된다. 아주 간단한 .. 2020. 7. 26. [백준 1912] 알고리즘 29일차 : 연속합 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 수학 C++ 시간복잡도가 문제 O(N)으로 풀어야 하는 문제인 것 같다. 배열을 총 두개를 사용했는데, 처음 입력받은 숫자가 들어있는 배열과 본인을 포함하는 연속된 수들의 합 중 최댓값을 저장하고 있는 배열 바로 전 수를 포함한 최대 연속된 수의 합에 본인을 더한 것과 본인을 비교해서 큰 값을 배열에 저장한다. 그 배열에서 가장 큰 값이 연속된 수의 최대값이 된다. 로직에서 힌트를 조금 얻었다. 소스코드 #.. 2020. 7. 24. [백준 10828] 알고리즘 28일차 : 스택 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net 스택 C++ 배열로 만든 스택 기본 자료구조 ..진짜 말할게 이것뿐.. C++에서 문자열 다루는거랑 동적할당,벡터 쓰는게 익숙하지 않다. 그래서 쉬운문제여도 문자열을 다뤄야 하면 자바나 파이썬을 쓰게 되고 벡터는 아직도 익숙해지지가 않아서 찾아가면서 하는데 좀 더 많이 쓰려고 노력해야겠다. 부족한 부분을 찾아가는 유익한 문제풀이 시간~ 소스코드 #include #include.. 2020. 7. 22. [백준 2609] 알고리즘 27일차 : 최대공약수와 최소공배수 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 수학3 C++ 리터럴리 두 정수의 최대공약수랑 최소공배수를 출력하는 문제다. 최대공약수는 둘 중 작은 수부터 하나씩 감소시키면서 검사하고(이렇게 안하고 좀 더 효율적으로 할 수 있겠지만 통과는 된다) 최소공배수는 둘 중 작은 수부터 그의 배수를 검사한다. 끝 오늘 문제는 폰코딩했다. ios문자랑 아스키코드가 안맞는건지 “랑 - - 이 코드로 인식이 안돼서 계속 컴파일 에러가 떴었다.. 이전에 풀었던 코드에서 가져와서 고쳐서 냈는데 이번엔 걍 틀렸습니다.; 해결못하.. 2020. 7. 21. [백준 9461] 알고리즘 26일차 : 파도반 수열 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 � www.acmicpc.net 다이나믹 프로그래밍 C++ 접근방법 문제에 떡하니 피보나치 같은 규칙을 찾아서 풀으라고 써있어서 그렇게 풀었다. 사실 그림만 보면 p[i] = p[i-1] + p[i-5] 가 맞지만 p[i-2] + p[i-3] 으로 제출해도 맞다. 처음엔 불필요한 계산을 최대한 안하려고 (동적계획법이니까) 변수도 더 쓰고 처리도 더 했었는데 그런거 다 안해도 통과되길래 그냥 다 지우고 최대한 간결하게 제출했다. 소.. 2020. 7. 20. [백준 1904] 알고리즘 25일차 : 01타일 https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이�� www.acmicpc.net 다이나믹 프로그래밍 C++ 접근방법 이것도 그냥 피보나치다. 근데 입력이 1,000,000까지고 출력은 모든 이진수 개수%15746이다. 그래서 그냥 피보나치 처럼 풀어서 나눈 나머지를 출력하면 절대 값이 안나온다. 다행히 나머지를 구하는 것이라는 거 나머지를 구해야 하는거면 굳이 결과 값을 다 더하면서 갈 필요가 없다. 결과 값에서 15746로 나누어 떨어지는 만큼은 필요 없기 때문에 1부터 N까.. 2020. 7. 18. [백준 1003] 알고리즘 24일차 : 피보나치 함수 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 동적계획법 C++ 접근방법 피보나치 수열은 재귀로 푸는 것 보다 동적계획법으로 배열을 사용해서 푸는게 시간복잡도가 훨씬 낮다. 이는 재귀로 계산하면 계속 같은 계산을 반복해야하지만 배열에 값을 저장해두면 다음번엔 계산하지 않아도 되기 때문이다. 근데 이 문제는 이런 논리를 사용하긴하는데 수학적으로는 피보나치와 약간 연결성이 떨어져 보였다. 뭔가 푸는 방법만 같은 느낌 실제로 코드는 피보나치수열을 동적계획법으로 풀이한 것과 로직은 동일하다. 어렵게 생각하지 말고 그냥 트리나 표를 그려서 접근하는.. 2020. 7. 16. [백준 1676] 알고리즘 23일차 : 팩토리얼 0의 개수 https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 수학3 c++ 접근방법 애초에 팩토리얼 구하는 수의 범위가 500까지라(시간제한2초) 팩토리얼을 계산해서 푸는 문제는 아니었다. 가장 작은 자리 수 부터 연속되는 0의 개수를 출력하는 문제라 N부터 0까지 연속되는 수가 모두 곱해서 팩토리얼 결과가 나오는 거니까 0의 개수는 5*2의 개수이다. 근데 연속되는 수니까 2의 개수가 5의 개수의 비해 많을게 분명하다. 따라서 2의 개수는 세지 않고 5의 개수만 센다. 이때 주의할 점은 25, 125같이 2개 이상의 5로 구성된(?)수가 있.. 2020. 7. 15. [백준 11653] 알고리즘 22일차 : 소인수분해 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 수학3 C++ 접근 방법 정수 N을 2부터 나눠가는데 이를 나눠서 0이면 계속 같은 수로 나누면서 출력하면 오름차순으로 소인수분해 결과를 출력할 수 있다. 가장 작은 소수부터 시작해서 그 수로 더이상 나눠지지 않으면 나누는 수를 1 증가시켜 나눠보는 과정을 반복하고 N이 1이하가 되면 반복문을 나온다. 소스코드 #include using namespace std; int main(){ int N; cin >> N; int d = 2; while(N > 1){ while(N%d == 0){ cout 2020. 7. 14. 이전 1 ··· 18 19 20 21 22 23 다음