728x90

c++ 11

백준 11726 : 2×n 타일링(C언어, C++)

오늘은 백준 11726번 문제인 2×n 타일링을 풀어보겠습니다. 이러한 타일링 문제는 다이나믹 프로그래밍(DP)을 응용할 수 있는 좋은 기본 문제로 뽑히고 있습니다. 아래에서 문제를 한 번 확인해 봅시다. 문제 링크: 11726번: 2×n 타일링 (acmicpc.net) 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ..

백준 1463 : 1로 만들기(C언어,C++)

오늘은 백준 1463 : 1로 만들기를 풀어보려고 합니다. 실버 3 난이도로 다이나믹 프로그래밍을 연습하는 좋은 문제인데요, 한번 풀어봅시다. 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 해설 문제를 처음 보면 감이 안 잡힐 수도 있습니다. "12부터 시작한다면 12에서 3으로 나누기, 2로 나누기, 1 빼기 중에 어..

백준 10989 - 수 정렬하기 3(C언어,C++)(계수 정렬)

오늘은 백준 10989 수 정렬하기 3문제에 대해 알아보는 시간을 가지겠습니다. 문제를 풀면 분명 맞다고 생각되는데 계속 시간초과나 메모리초과가 나오기에 당황하셨을 겁니다. 오늘은 왜 틀리고 어떻게 해야 하는지 C언어에서 알아보겠습니다. 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 해설 문제 조건을 보면 N은 1~ 1천만 까지 주어집니다. 그리고 메모리 제한은 8mb입니다. 만약 N만큼 배열을 선언하여 수를 입력받으..

[C언어/C++,자바,파이썬] 온라인 컴파일러 사이트 추천

C언어, C++, 자바, 파이썬 온라인 컴파일러 사이트 추천 개발을 하거나 알고리즘 문제를 풀 때 보통 비주얼 스튜디오 같은 프로그램을 사용합니다. 하지만 이러한 프로그램을 사용하지 못하는 환경이면 온라인에서 실행가능한 컴파일러 사이트를 사용해야 합니다. 보통 군대에서 사지방을 이용할 때 처하는 상황인데 오늘은 여러 C언어, C++, 자바, 파이썬 온라인 컴파일러 사이트를 추천해 드리겠습니다. 여러분의 취향에 맞는 사이트를 사용하시면 되겠습니다. 1. CS Academy 사이트 링크 : https://csacademy.com/workspace/ CS Academy csacademy.com 제가 백준 문제를 풀 때 가장 애용하는 사이트입니다. 제가 생각했을 때 알고리즘 문제를 풀 때 가장 최적화된 사이트 ..

[C언어/C++] 소수점 개수(자리)지정 방법 정리

소수점 개수(자리, 범위) 지정 방법 정리 코딩을 하거나 백준 문제를 풀거나 하다 보면 소수(실수)를 출력하는 경우가 생깁니다. 특히 소수점의 개수를 지정해줘야 하는 경우가 많이 생기는데 오늘은 그 방법을 한번 알아보겠습니다. 참고로 C언어, C++ 두 개 모두 방법을 알아볼 예정입니다. 가장 먼저 C언어에서 알아보겠습니다. C언어 C언어에서는 출력 시 printf를 주로 사용하는데 이곳에서 바로 지정해 줄 수 있습니다. printf, scanf는 입력, 출력 시 자료형을 직접 지정해 줘서 번거로운데 이 단점이 소수를 출력해 줄 때에는 장점이 됩니다. 아래 코드를 살펴봅시다. #include int main(void) { double a=123456.123456789; printf("%.9lf", a);..

[C++] 1차원, 2차원, 3차원 배열 초기화 정리(fill, fill_n,memset,전역,지역)

1차원, 2차원, 3차원 배열 초기화 하기 알고리즘 문제를 풀 때 배열을 특정 원소들로 채워 넣는 경우가 있는데요, 오늘은 C언어와 C++에서 배열 초기화 하는 여러 가지 방법을 알려드리겠습니다. fill, fill_n, memset등에 대해 소개하겠습니다. 일단 전역변수와 지역변수에 대해 알아봅시다. 함수안에 선언된 변수를 '지역변수', 함수 밖에 선언된 변수를 '전역변수'라고 하는데 어디에 선언되냐에 따라 초기화 여부가 달라집니다. 배열도 마찬가지입니다. 전역변수 배열이 함수밖에 선언된다면 배열 안의 모든 값은 0으로 자동 초기화 됩니다. #include using namespace std; int a[5]; int main() { for(int i=0; i

[C/C++] 백준 1152 : 단어의 개수 풀이

백준 1152 : 단어의 개수(C, C++) 문제 링크 : 1152번: 단어의 개수 (acmicpc.net) 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net C언어와 C++ 두 가지 모두 해설이 준비되어 있습니다. 문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1..

[C/C++] 백준 2884 : 알람 시계 풀이

백준 2884 : 알림 시계(C, C++) 문제 링크 : 2884번: 알람 시계 (acmicpc.net) 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해 보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다...

[백준/C++] 백준 시간초과 해결법, 원인 정리

백준(C++) 시간초과 해결법 백준 알고리즘 문제를 풀다 보면 제출 시 시간초과가 뜨는 경우가 있다. 이 경우 코드 몇 개만 추가하거나 수정하거나 해서 시간초과를 해결할 수 있다. 아니면 문제 해결에 사용한 알고리즘의 시간복잡도를 고려해 볼 수도 있다. 오늘 시간초과 원인과 해결법에 대해서 알아보자. 1. ios::sync_with_stdio(false) 추가 C++에서 입력은 크게 printf와 cout 출력은 scanf와 cin이 있다. 여기서 cout와 cin은 printf, scanf에 비해 속도가 느리다. 그 이유는 cout와 cin는 실행 시 값의 자료형을 검사하기 때문이다. 속도가 좀 더 느리나 안정적이다. ios::sync_with_stdio(false); ios::sync_with_std..

C++ STL pair 클래스 정리(vector, sort,백준,응용)

C++ STL pair 클래스 총정리(vector, sort) C++ STL 중 라이브러리에 pair클래스가 있다. 오늘은 이 pair클래스에 대하여 알아보겠다. 추가로 알고리즘 문제를 풀 때 어떻게 응용되는지도 보자. pair를 사용하면 자료 두 개를 한 가지 자료에 저장할 수 있다. pair는 2차원 좌표 저장등 많은 곳에서 유용하게 쓰이므로 꼭 익혀두자. 일단 라이브러리에 있으니 추가해 준다. 이제 사용해 보자 생성 pair p; type1, type2 두 개의 데이터를 저장하는 pair p를 만든다. 예를 들어 좌표를 저장하려면 y좌표, x좌표 두 개를 저장할 int형 공간이 필요하므로 pair p;와 같이 선언해 주면 된다. int형뿐만 아니라 string, char, float 등을 자유롭게 ..

728x90