반응형

<알고리즘 문제풀이&연습> 103

[백준 11050] 이항계수 1 (반복, 재귀)

안녕하세요. BlockDMask 입니다.비가 추적추적 내리는 월요일이네요. 오늘의 문제를 포스팅 해보겠습니다.0. 제목BOJ 11050 이항계수 1백준 11050 이항계수 1 C++ 이용해서 풀었습니다.1. 문제 설명 자연수 N과 정수 K가 주어졌을때, 이항계수 를 구하는 문제입니다. 2. 풀이 과정 이항계수( binomial coefficient ) 는 경우의 수를 계산할때 사용하는 것으로 알고있습니다.n개의 서로다른 것 들 중에서 k 개를 선택하는 것의 조합(combination)의 경우의 수를 구하는 것입니다. 는 로 나타내고 이는 으로 나타낼 수 있습니다. 팩토리얼(Factorial)은 반복문과 재귀 두가지 방법으로 표현 할 수 있기 때문에 두가지 방법 모두를 사용하여 풀어보았습니다. 3. 함수 ..

[백준 1157] 단어 공부 (map)

안녕하세요 BlockDMask 입니다.문자와 아스키 코드를 이용하는 문제입니다.최근 공부중인 STL을 사용해보았습니다.0) 제목BOJ 백준 1157번 "단어 공부" 문제입니다.C++ 을 이용하여 풀었습니다.1) 문제설명 알파벳이 대소문자 구분없이 쭉~~~! 주어지면그중, 가장 많이 쓰인 알파벳이 무엇인지 알아내는 문제.단, 대소문자 구분 없음.가장 많이 쓰인 알파벳을 대문자로 출력.만약 가장 많이 쓰인 알파벳이 여러개 라면 "?" 출력. 2) 풀이과정 STL에서 container를 요즘 공부하고있기 때문에, 이 문제를 보자마자 알파벳 및 횟수를 map의 로 만들면 되겠다라는 생각이 들었습니다. map을 이용하여 알파벳, 횟수를 map로 묶었습니다.대문자를 출력하기 위해서 소문자가 들어왔을때, 아스키 코드..

[백준 2750] 수 정렬하기 (버블정렬, 삽입정렬)

안녕하세요! BlockDMask 입니다. 오늘 푼문제는 버블정렬(Bubble Sort)과 삽입정렬(Insertion Sort)를 복습하는 마음으로 푼 문제였습니다. 버블정렬과 삽입정렬 두 방법 으로 문제를 풀었습니다. 0) 제목 BOJ 2577 번 문제 " 수 정렬하기 " 입니다. C++ 을 이용해서 풀었습니다. 1) 문제 설명 숫자 n 이 입력되면 그 n 개의 갯수만큼 숫자를 입력 받습니다. 그 숫자들을 오름차순 순으로 정렬하여 출력합니다. 2) 풀이과정 bubble sort 와 insertion sort 두가지 다 이용해서 풀어보았습니다. 3) 함수설명 null 4) 코드 -> Bubble Sort 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ..

[백준 1152] 단어의 개수 (strtok)

안녕하세요! BlockDMask 입니다.오늘은 문자열 관련해서 문제를 풀어 보았습니다.0) 제목 단어의 개수BOJ 1152 번 문제입니다.C++ 이용해서 풀었습니다. 1) 문제설명 띄어쓰기가 포함된 문장 최대 1,000,000 자 까지 입력이 됩니다.이중, 문자 가 몇개인지 인식하여서 출력하는 문제입니다. 2) 풀이과정 char 타입 배열로 문자열을 받아서. strtok 함수를 이용하여서 띄어쓰기를 기준으로 문자열을 나누었습니다. 3) 함수설명 주석에 달아놓았습니다추후 strtok 사용법에 대해 작성하겠습니다. 4) 코드 123456789101112131415161718192021222324#include#include#includeusing namespace std; int main(void){ cha..

[백준 2577] 숫자의 개수

0) 제목 숫자의 개수BOJ의 2577 번 문제입니다.C++ 이용해서 풀었습니다. 1) 문제설명 세개의 세자리 자연수 A, B, C 가 주어집니다 A*B*C 한 결과에서0~9 까지의 숫자의 갯수가 각각 몇개인지 출력하는 문제입니다. 2) 풀이과정 세자리수 자연수 A*B*C 를 했을때 자릿 수를 생각해보면 999를 1000이라 생각하면 10^3 입니다. 이를 세번 곱하니 10^9 입니다. int가 4bytes 일때, 2^32 이니까. 2^10 == 10^3 이 세번이므로 2^30 == 10^9 과 비슷하다고 생각할 수 있습니다.그러므로 int 값 범위 안에서 해결이됩니다. 0~9 까지의 숫자를 카운트할 배열 arr을 만들고 0으로 초기화 합니다.세개의 자연수를 곱한 값을 10으로 나눈 나머지를 인식해서 해..

[백준 11720] 숫자의 합 (아스키코드)

안녕하세요. BlockDMask 입니다.!!0) 제목 숫자의 합BOJ의 11720 번 문제입니다. 1) 문제설명 n개의 숫자가 띄어쓰기 없이 주어집니다.n개 의 숫자를 더해서 출력하면 되는 간단한 문제입니다. 2) 풀이과정 하나씩 받아야 하므로, char 타입으로 문자로 받았습니다.아스키 코드를 생각하여서'0' 을 빼서 int 타입으로 변환하여 합을 구했습니다. 3) 함수설명 간단하므로 생략하겠습니다. 4) 코드 12345678910111213141516#includeusing namespace std; int main(void){ int n; cin >> n; char ch; int sum =0; for(int i=0; i> ch; sum += (ch - '0'); } cout

[C++ vector] Vector-Erase

0) 제목Hackerrank의 C++ STL 카테고리의 Vector-Erase 문제입니다.C++ 사용했습니다.1) 문제설명n을 입력 받고 n개의 개수 만큼 vector의 인자를 받습니다.a를 입력받고 a번째 인자를 erase합니다.a, b를 입력받고 범위 a~b 인자를 erase 합니다.vector의 size와, 인자들을 차례로 출력합니다.2) 풀이과정erase의 두가지 쓰임새를 위한 간단한 문제입니다.v.erase(iter) 처럼 파라미터를 하나 받는 경우에는 벡터의 iter 위치의 인자를 삭제 합니다.v.erase(start, end) 처럼 파라미터를 두개 받는 경우에는 [start, end) 의 범위의 인자를 삭제 합니다.start 이상, end 미만의 범위의 인자를 삭제 한다는 뜻입니다.그림으로 ..

[C++ protected] Rectangle Area (Inheritance)

0) 제목Hackerrank 의 C++>Inheritance 부분의 Rectangle Area 입니다.C++ 이용하여 풀었습니다.1) 문제설명간단한 문제입니다.Rectangle 클래스를 만들고 그것을 상속 받는 Rectangle Area 클래스에서 Rectangle 클래스의 멤버 변수에 접근 해라.2) 풀이과정문제에서 시키는대로만 만들면 됩니다.유도 클래스에서 기초 클래스의 멤버 변수를 직접 접근 하기 때문에, 기초 클래스의 멤버 변수를 protected로 선언해서 문제를 풀었습니다.3) 함수설명간단하게 접근 지정자에 대해 말하고 가겠습니다. C++ 에서는 3가지의 접근 지정자가 존재합니다.접근지정자(access specifier) 는 클래스 외부에서그 멤버를 접근할수 있는 허가? 범위? 를 지정하는 것..

[백준 14612] 김식당 (IUPC)

안녕하세요 BlockDMask입니다.백준 알고리즘 사이트를 알게되어서,문제를 풀고 게시하려 합니다.잘부탁드립니다.0) 제목- 2017 인하대학교 프로그래밍 경진대회(IUPC) A번 김식당 입니다.- C++을 이용하여 풀었습니다. 1) 문제설명 - 초기 값으로 N(입력될 쿼리의 갯수), M(테이블의 수)가 들어옵니다.- 쿼리의 종류로는 order [int][int] sort complete [int] 가 있습니다. 2) 풀이과정- order와 sort만 보고, 배열로 풀려고 했으나, 중간 값을 삭제하는 complete 가 주어져서, 배열은 삭제 후 재 배열을 해주어야 하기 때문에 complete에 맞지 않는다고 판단하였습니다.- 그래서 중간값을 삭제해 줄 수 있고, 자동으로 동적할당을 해주는 STL vec..

[C++ 예외처리] Exceptional Server (bad_alloc, exception)

0) 제목 Hackerrank 의 C++>Classes부분의 Exceptional Server 문제입니다.C++ 이용하여 풀었습니다. 1) 문제설명 함수가 제대로 작동하는지 관련해서 예외처리 하는 문제입니다.함수가 제대로 작동하는 경우 -> 함수결과 값 출력.함수에서 메모리 할당관련 오류가 난경우 -> "Not enough memory" 출력.C++ standard 오류가 발생했을 경우 -> "Exception : S" 출력 S는 에러 메시지.C++ standard가 아닌 다른 오류가 발생했을 경우 -> "Other Exception" 출력. 2) 풀이과정 예외처리라고 하자마자 try, throw, catch가 생각났습니다.예외가 발생했을때 throw를 통해서 보내는데이때 catch에서 인자로 받을 오류..

반응형