분류 전체보기 143

[C++] 3주차 과제3

첨부파일(HW3.pdf)에 제시된 문제를 C++ 프로그램으로 작성하라. 입력 파일의 제목은 "input.txt"로 통일 (문장부호, 중복 단어를 포함한 예문 사용) 결과물(출력할 내용) : 입력파일 내용, 단어 정렬 결과, 중복 제거 결과, 단어 검색 결과 예 단어 정렬 결과, 중복 제거 결과 등은 (단어 위치, 단어)와 같이 쌍으로 표현하며, 출력 형식(표, 리스트 등)은 자유로이 선택 검색 예는 입력에 포함되어 있는 단어, 없는 단어 각 3개씩 검색하여 결과 보이게 한다. 프로그램의 종료 없이 한 번의 실행으로 반복적으로 검색할 수 있도록 한다. (.(마침표) 입력시 프로그램 종료) 문장부호는 최소 '"!?,. 6개를 제외시킨다. 문장에 존재하는 단어를 입력할 시에는 단어의 위치(1부터 시작), 없는..

[C++] 2주차 과제2

1주차에 작성한 학과명, 학번, 이름, 생년월일, 나이, 현재날짜를 출력하는 C++ 프로그램을 수정하여 다음 기능을 포함하도록 작성하라. Exception handling을 구현하기 위한 try-catch의 구조를 이용하여 사용자의 입력 데이터에 오류가 있을 때 처리하는 프로그램을 작성하라. (사용자의 입력 오류로 프로그램이 오작동하는 경우가 발생하지 않도록 최대한 대처할 수 있도록 할 것) 예: 생일 입력시 "2000/03/33"과 같이 잘못된 날짜를 입력한 경우 다시 입력할 것을 요구함 Code // use class Date // 이름, 학부(과)명에 숫자가 들어가지 않고, 학번에는 숫자만 들어간다고 가정했습니다. #include #include #include #include #include #p..

[C++] 1주차 과제1

학과명, 학번, 이름, 생년월일을 입력받아서 학과명, 학번, 이름, 생년월일, 나이, 현재날짜를 출력하는 C++ 프로그램을 작성하라. Date 클래스를 정의해서 이용하라. 입출력 예: 환영합니다! 학과명, 학번, 이름, 생년월일(yyyy/mm/dd)을 입력하세요> 소프트웨어학과, 1111222333, 홍길동, 2000/03/01 >> 소프트웨어학과 1111222333 홍길동님 2000년3월1일생 2020년3월16일 현재 20세입니다. ** 프로그램을 수행할 때의 현재 날짜를 출력해야하며, 본인의 학번과 이름은 정확히 기록해야함(출석 및 과제 제출 확인용). 생일은 임의로 작성 가능. Code // use class Date #include #include #include #include #include ..

[C++] 과제 4: 가장 큰 수

길이가 N인 숫자로 된 문자열이 있다. 이 문자열에서 연속한 K개의 숫자로 만들 수 있는 가장 큰 수를 찾는 프로그램을 작성하시오. 예를 들어, 문자열이 "1414213"이고 K=3이라면, 만들 수 있는 수는 141, 414, 142, 421, 213이며 421이 이 중 가장 큰 수이다. .c/.cpp/.java 파일 하나를 제출하시오. 입력 표준 입력으로 입력을 받는다. 첫줄에 두 정수 N과 K가 주어지는데, N은 문자열의 길이로 1 이상 100,000 이하이며, K는 문제에서 설명한 것과 같은 의미로 1 이상 10 이하이다. K가 N보다 큰 경우는 없다. 다음 줄에는 길이가 N인 숫자로 이루어진 문자열이 주어진다. 출력 표준 출력으로 출력한다. 한 줄에 정수 하나를 출력하는데, 이 수는 문제의 조건을..

[C++] 과제 3: 칸 채우기

3 x n 크기의 네모칸이 있다. 이 칸을 3 x 1 크기의 블럭을 이용하여 겹치지 않고 빼꼭하게 채우는 서로 다른 방법의 가짓수를 구하는 프로그램을 작성하시오. 이 문제를 푸는 .c/.cpp/.java 파일 하나를 제출하시오. 예를 들어, n = 1일때는 1가지, n = 2일 때는 1가지, n = 3일 때는 2가지임을 쉽게 알 수 있다. n=3인 경우를 세 블럭 OOO, XXX, MMM으로 채운 두 가지 경우가 아래 그림과 같다. OXM OOO OXM XXX OXM MMM 입력 표준 입력으로 받는다. n을 나타내는 정수 하나가 주어진다. n은 1 이상 45 이하이다. 출력 표준 출력으로 한 줄에 정수 하나를 출력한다. 이 정수는 문제의 조건을 만족하는 가짓수를 나타낸다. 예제 입력 1 1 예제 출력 1..

[C++] 과제 2: 포로 수용소 - Convex Hull 응용

제출은 .c/.cpp/.java 파일 하나만 제출해주세요. 2차원 좌표 (0, 0) 부터 (N, N)로 표현되는 포로 수용소 안에 M명의 포로들이 있다. 포로들은 이 좌표의 정수점 위에 있고, 한 점 위에 두명 이상의 포로가 있는 경우는 없다. 또, 한 직선 위에 세 명 또는 그 이상의 포로가 오는 경우도 없다. 포로들은 이동하지 않는다. 포로를 감시하는 것이 너무 힘들어서, 포로들의 일부에게 다른 포로를 감시하는 권한을 주려고 한다. 가능한 한 가장 적은 수의 포로에게 감시 권한을 주려고 하는데, 한 가지 제약 조건이 있다. 감시 권한이 없는 포로는, 감시 권한이 있는 포로 세 명을 이어서 만들어지는 삼각형 안에 반드시 들어 있어야 한다. 포로 수용소의 크기 N, 포로의 수 M이 주어졌을 때, 감시 권..

[C++] 8958 OX퀴즈

string 배열 quiz 에 N개의 퀴즈 결과를 입력받고 저장한다. int 배열 score 도 생성해서, 각 퀴즈 결과의 총점을 계산 후 저장한다. 퀴즈 결과의 각 문제마다, O라면 countO 값 1 증가, X라면 countO = 0 으로 초기화. 다음 문제로 넘어가기 전에 매번 countO 값을 score 배열의 해당되는 원소에 더해준다. 마지막 문제까지 이 과정을 반복한다. 모든 퀴즈 결과에 대해서 위의 과정을 반복한다. score 배열을 출력한다. #include #include using namespace std; void Score(string* quiz, int N) { int* score = new int[N]; for (int i = 0; i < N; i++) score[i] = 0; ..

Training/BOJ 2020.08.03

[C++] 3052 나머지

배열 in_arr 에 숫자 10개를 차례대로 입력받고 저장한다. 배열 re_arr 에 in_arr 의 원소들을 각각 42로 나눈 나머지를 차례대로 저장한다. re_arr 를 오름차순으로 sort 한다. check 라는 변수를 만들고, re_arr의 첫번째 원소를 할당해준다. re_arr 의 두번째 원소부터 차례대로 check 와 같은 값을 가지는지 아닌지 확인을 해본다. 같은 값이 아니라면 cases 값을 하나 증가시켜 준 뒤, check 값은 비교결과가 같지 않았던 그 re_arr의 원소 값으로 다시 할당해준다. 앞의 과정을 re_arr 의 모든 원소에 대해서 반복한다. 비교가 끝났다면 cases 값을 출력한다. #include #include using namespace std; int main() ..

Training/BOJ 2020.08.03

[C++] 2577 숫자의 개수

0~9개가 각각 몇 개인지 저장할 배열 count를 만든다. (배열값들 0으로 초기화) int A,B,C를 입력받고 long mult 변수에 곱셈결과를 저장한다. 이제 mult>0 를 만족하는 동안, mult%10 을 구한 뒤 mult 를 10으로 나눠주는 과정을 반복한다. mult%10 이 0~9 중 무엇인지 switch문을 통해서 판단 후 배열의 해당되는 원소 값을 증가시켜준다. ex) mult%10 == 1 이면 count[1]++, mult%10 == 5 면 count[5]++. mult/=10 후 앞의 과정 반복. mult 가 다 나눠지고 0이 되면 count 배열의 원소들을 차례대로 출력한다. #include using namespace std; int main() { int A = 0, B ..

Training/BOJ 2020.08.03

[C++] 2562 최댓값

서로 다른 100보다 작은 자연수 9개를 in_arr 배열에 입력받는다. in_arr 배열의 원소들을 sort_arr로 복사한다. sort_arr를 algorithm의 sort 함수를 이용해서 정렬한다. 그럼 sort_arr의 맨 마지막 원소가 최댓값이다. 이 최댓값과 in_arr의 원소들을 차례대로 비교하면서, 매치되는 원소의 in_arr 내에서의 위치를 저장한다. 최댓값과 위치값을 출력한다. #include #include using namespace std; int main() { int* in_arr = new int[9]; int* sort_arr = new int[9]; int max = 0, loc = 0; for (int i = 0; i > in_arr[i]; f..

Training/BOJ 2020.08.03

[C++] 11720 숫자의 합

처음에 이걸 어떻게 풀지 고민할 때, '입력을 string으로 받은 다음에 stoi 함수를 이용해서 int로 바꾸고, 계속 10으로 나눈 나머지를 더한 결과를 출력하면 되겠네!' 라고 생각했다. ​ 그대로 구현하다 보니 미처 고려 못 한 부분이 있었다. 둘째 줄에 입력받을 숫자는 1개 이상 100개 이하다. 즉, 최대 100개의 자릿수를 가진 매우 큰 숫자가 입력될 수도 있다. 그런 큰 숫자는 int형으로 변환될 수 없다. int형이 표현할 수 있는 가장 큰 수는 2,147,438,647 밖에 안 되기 때문. ​ 그렇다면 int 보다 더 큰 자료형인 long long으로 변환하면 해결될까? 그것 또한 아니다. long long이 제 아무리 int 보다 두 배의 메모리 공간을 가지고 수용할 수 있는 범위가..

Training/BOJ 2020.07.20

[C++] 15552 빠른 A+B

cin / cout 을 사용하고자 한다면 sync_with_stdio(false); cin.tie(NULL); 를 둘 다 적용하라고 한다. 그리고 endl 대신 개행문자를 써야한다. ​ 문제의 요지는 '시간을 최대한 줄여라.' 이다. #include using namespace std; int main() { cin.tie(NULL); ios::sync_with_stdio(false); int T; cin >> T; int a, b = 0; int *result = new int[T]; for (int i = 0; i > a >> b; result[i] = a + b; } for (int i = 0; i < T; i++) { cout

Training/BOJ 2020.07.20
반응형