필요/코딩테스트(백준)(49)
-
[백준/C++]#11727 - 2xn 타일링2
풀이 #include using namespace std; int main() { int n; cin >> n; int D[1001]; D[1]=1, D[2]=3; for (int i=3; i
2021.01.18 -
[백준/C++]#11726 - 2xn 타일링
풀이 #include using namespace std; int main() { int n; cin >> n; int D[1001]; D[1]=1,D[2]=2;// n=1, n=2일 때의 2xn 타일링 수 for (int i=3; i> n; cout 0) return D[k]; 이 줄이 없으면 시간초과가 발생한다. 이를 사용한 중복제거가 생각보다 훨씬 중요한 것 같다. 이 방법 외에, 안타깝게도 처음 접근시 아주 복잡한 해결책을 생각했다. 2a + b = n으로 놓고, a와 b를 반복문을 통해 구한 뒤 그 값을 팩토리얼에 넣은 뒤, 모두 합해준다. 이론상으로는 가능하게 생각된다. #include using namespace std; int fact(int n){// 팩토리얼 함수 if (n < 2) r..
2021.01.17 -
[백준/C++]#1463 - 1로 만들기
풀이 #include using namespace std; int D[1000000];// 함수 값 저장하기 위한 배열 정의 int makeone(int n) { if (n == 1) return 0;// n이 1일 때 0 값 반환 if (D[n] > 0) return D[n];// 배열 값이 존재할 때 배열 값 반환 D[n] = makeone(n-1) + 1; if (n % 2 == 0) {// 2로 나눠지면서 n/2가 더 작은 경우였다면 D[n]에 저장 if (makeone(n-1) > makeone(n/2)) D[n] = makeone(n/2)+1; } if (n % 3 == 0) {// 3으로 나눠지면서 n/3이 더 작은 경우였다면 D[n]에 저장 if (makeone(n-1) > makeone(..
2021.01.15 -
[백준/C++]#10820 - 문자열 분석
풀이 #include #include using namespace std; int main() { string s; while (getline(cin, s)) {// 문자열을 입력받을 때마다 반복 int a=0,b=0,c=0,d=0; for (int i=0; i= 'a' && s[i] = 'A' && s[i] = '0' && s[i]
2021.01.14 -
[백준/C++]#1158 - 요세푸스 문제
풀이 #include #include using namespace std; int main() { int n,k,i; cin >> n; queue s; for (int i=1; i k; i = 1; while (n-1) {// n-1이 0이 될 때까지 반복문 수행 if (i % k != 0) {// i 나누기 k의 나머지가 0이 아닐 때 front 값을 다시 큐에 넣고 pop s.push(s.front()); s.pop(); } else {// i 나누기 k의 나머지가 0일 때 front 값을 출력하고 pop cout
2021.01.14 -
[백준/C++]#1406 - 에디터
풀이 #include #include #include using namespace std; char a[600000]; int main() { scanf("%s", a);// 문자열 입력받는다. stack left, right; int m = strlen(a);// 문자열의 길이 for (int i=0; i
2021.01.13 -
[백준/C++]#10799 - 레이저로 쇠막대기 자르는 문제
풀이 #include #include #include using namespace std; int main() { string a; int cnt = 0; cin >> a; stack s;// 스택 생성 for (int i=0; i a; sta..
2021.01.12 -
[백준/C++]#9012 - 올바른 괄호 문제
풀이 #include #include using namespace std; int main() { int n,cnt; string s; cin >> n; for (int i=1;i> s; cnt = 0; for (int j=0; j < s.size(); j++) {// 각 성분을 비교하기 위해 배열의 크기만큼 반복 if (s[j] == '(') { cnt++; } else cnt--; if (cnt < 0) break; } if (cnt == 0) cout
2021.01.12 -
[백준/C++]#11718 - 공백이 존재하는 문자열 출력
풀이 #include #include using namespace std; int main() { string str; while (true) { getline(cin,str); if (str == "") break; cout
2021.01.11