반응형 [백준]214 [BaekJoon/백준] 11653번 소인수 구하기 문제. 나는 무조건 '소수'를 구해서 그 '소수'로 나눠야한다는 생각에 일일이 소수를 구했는데, 다른 분들의 풀이를 보니까 2로 나눠지는건 4로 나눠지는거고, 그게 소수가 아니라는 증거이기도 하니까.. 그냥 숫자를 2부터 하나씩 증가하면서 나눠주는 과정을 가지더라. 내 풀이 //소수구하기를 응용 //리턴값이 0이면 소수, 1 이상이면 나누어지는 수 중 가장 작은 수 리턴. #include int sosu(int key) { for(int i = 2; i*i 2021. 1. 30. [BaekJoon/백준] 10757번 큰 수 A + B 문제. 10000자리 이상의 큰 수에 대한 덧셈에서, C/C++에선 어떻게 처리할 수 있을지에 대한 방법이다. 문자열로 값을 받아서 다뤄주면 된다. 풀고 나서 다른 분들의 풀이를 참고해봤더니, 비슷한 방식이였다. 결국 마지막 올림수(맨 앞자리 올림수) 여부에 대한 처리로 if 문을 넣어주는 방식은 동일했다. 세 배열 모두 char로 선언하신 분들도 많았는데, 그런 방식으로도 가능하겠다. // 다 내 코드처럼 올림수에대한 분기문은 마지막에 작성하고있고(if부분), 구분 방법이 나랑은 조금 다를뿐. #include #include char a[10001]; char b[10001]; int ans[10001]; // 덧셈값을 쉽게 저장하기 위해서, 그리고 올림값을 잘 처리하기 위해서 int.. 2021. 1. 29. [BaekJoon/백준] 9184번 | 복습 1회 완료 메모이제이션을 사용하는 동적계획법을 알고 있느냐에 관한 개념적인 문제였다. 문제에서는 부분문제가 중복되는 상황에서 메모이제이션을 사용하지 않고, 재귀를 반복 호출하여 비효율적인 실행을 진행하고 있다. 따라서 메모이제이션을 적용해주면 된다. // 문제에서는 메모이제이션을 사용하지 않는다. 따라서 메모이제이션을 사용하여 효율을 높인다. #include #include int arr[101][101][101]; // 범위는 -50 ~ 50 이므로, +50시켜서 0 ~ 100까지로 만든다. int memo(int a, int b, int c) { if(arr[a][b][c] != 0) return arr[a][b][c]; if (a 70) // 범위가 변경되었으니, 기존 20에서 + 50 return arr[a.. 2021. 1. 13. [BaekJoon/백준] 9251번 | 복습 1회 완료 (★) LCS (Longest Common Subsequence) 최장 공통 수열을 구하는 문제. 벽을 느껴서 다른 분의 풀이를 참고했다. 풀이는 이렇다. (예제 입력을 통한 설명) A C A Y K P 0 0 0 0 0 0 0 C 0 0 1 1 1 1 1 A 0 1 1 2 2 2 2 P 0 1 1 2 2 2 3 C 0 1 2 2 2 2 3 A 0 1 2 3 3 3 3 K 0 1 2 3 3 4 4 ACAYKP 와 CAPCAK 의 입력을 받아들인다. 문자열의 최대길이는 1000이므로 1000를 선언해준다. char str1[1000]; char str2[1000]; 그리고 위 표는 dp 배열인데, 위 그림에서 보듯이 dp를 다룰 배열은 전체 크기 + 1로 놓는다. int dp[1001][1001]; 이유는, 계산.. 2021. 1. 8. 이전 1 ··· 34 35 36 37 38 39 40 ··· 54 다음 반응형