전체 글 433

[백준 1475] 방 번호

안녕하세요. BlockDMask 입니다.이번 포스트는 7월 20일짜 커버입니다.0. 제목 백준 1475 방 번호BOJ 1475 방 번호1. 문제설명 숫자가 1,000,000보다 작은 자연수가 입력이 되면,그것을 인식하기위한0~9가지의 열가지 숫자가 있는 플라스틱 숫자 셋트가 몇개가 필요한지.9는 뒤집어서 6으로 사용 가능하다. 2. 풀이과정 총 3가지 방법으로 풀어봤습니다. T1) 입력을 int 타입의 변수로 받고 배열을 이용하여 계산 한 경우 T2) 입력을 int 타입의 변수로 받고 STL map 컨테이너를 이용하여 계산 한 경우 T3) 입력을 string 타입으로 받고 계산 한 경우 3. 코드 T1) 입력을 int 타입의 변수로 받고 배열을 이용하여 계산 한 경우123456789101112131415..

[백준 10828] 스택 (C, C++ stack)

안녕하세요. BlockDMask 입니다. 오늘의 포스팅을 시작하도록하겠습니다.오늘은 기본 스택을 구현하는 문제입니다.C, C++ 두가지를 이용하여 풀었습니다.0. 제목백준 10828 스택BOJ 10828 스택1. 문제설명 정수를 저장하는 스택을 구현하는 문제입니다. push N : 정수 N을 스택에 넣습니다.pop : 스택의 맨 위의 정수를 빼고, 출력. 없는경우 -1 출력.size : 스택의 정수의 개수 출력.empty : 스택이 비어있으면 1, 아니면 0 출력.top : 스택의 가장 위의 정수를 출력, 없는경우 -1 출력 2. 풀이과정 C++ 은 STL 에서 stack이 구현 되어있기 때문에 구현되어있는 stack을 이용하였고, C는 직접 구현을 했습니다. 3. 함수설명 C++의 stack 의 멤버인..

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

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

버블정렬 (Bubble Sort) 이론과 코드

안녕하세요, BlockDMask 입니다. 오늘은 정렬 알고리즘 중에 버블 소트 (Bubble Sort)에 대해서 알아보도록 하겠습니다. 앞으로 제가 아는 sort들을 포스팅 해볼 예정입니다 버블 정렬 - bubble sort 삽입 정렬 - insertion sort 선택 정렬 - selection sort 퀵 정렬 - quick sort 병합 정렬 - merge sort 기수 정렬 - radix sort 이 순서대로 정렬 포스트를 진행 해 보도록 하겠습니다. 0. 원리Bubble Sort는 말 그대로 거품처럼 동글동글 하면서 sorting을 합니다. 거품을 연상하시면 쉬울 겁니다. 두 인접한 원소를 비교하는 정렬입니다. 오름차순으로 정렬을 한다고 했을때, 처음 한 바퀴를 돌게 되면 맨 뒤에 있는 인자가 ..

[C++] multimap container 정리 및 사용법

안녕하세요, BlockDMask 입니다.오늘은 연관 컨테이너(Associative container) 중 multimap 에 대해서 알아보도록 하겠습니다.multimap은 map과 거의 동일하지만 딱 한부분 만 다릅니다.key값이 중복 가능하다.map에 대한 자세한 정보는 [바로가기] 에 있습니다. 1) multimap containerAssociative : 노드 기반으로 구현된 Associative Container 에 속합니다. Ordered : Key, Value 값이 삽입될때 정렬이 되면서 삽입됩니다. (항상 정렬되어있는 상태 입니다) Map : 각각의 Key는 하나의 Value 에 mapping 됩니다. (pair 객체를 이용하여 key, value를 묶습니다.) Multiple equival..

[백준 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 ..

[C++] map container 정리 및 사용법

안녕하세요. BlockDMask 입니다. 오늘은 연관 컨테이너 set, multiset, map, multimap 중. key와 value가 쌍으로 저장되는 map에 대해서 알아보도록 하겠습니다. std::map은 std::vector 처럼 정말 많이 쓰이는 컨테이너 중에 하나 입니다. 연관 컨테이너들은 99% 멤버 변수가 동일합니다. > 관련 포스팅: map, set의 키를 클래스나 구조체로 설정하는 방법 [바로가기] 1) map container Associative - 연관 컨테이너 (associative container) 중 하나입니다. 노드 기반으로 이루어져있고 균형 이진 트리 구조입니다. Map - map은 key와 value로 이루어져있으며 이는 pair 객체 형태로 저장됩니다. Uniqu..

[백준 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..

[C++] multiset container 정리 및 사용법

안녕하세요 ! BlockDMask 입니다.오늘은, 연관 컨테이너(set, multiset, map, multimap)중 multiset 에 대해서 알아보겠습니다.!set과 구별되는 multiset의 가장 큰 특징은 key값이 중복된다는 것 입니다.나머지 연산자, 생성자, 멤버 변수는 동일합니다.예시를 들고 예시에 사용된 멤버 변수만 설명하는 방식으로 이번글을 써보겠습니다.설명한 부분 이외의 생성자, 연산자, 멤버 변수는 set container와 동일하므로 여기서 보시면 되겠습니다.1) multiset containerset container 와 같이 key 값을 저장합니다. set container 와 달리 중복된 key 값을 저장 할 수 있습니다. 원소를 삽입하면 자동으로 정렬이 됩니다.2) mult..

[백준 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으로 나눈 나머지를 인식해서 해..

[C++] set container 정리 및 사용법

안녕하세요. BlockDMask 입니다 !오늘은 연관 컨테이너 set, multiset, map, multimap 중 set에 대해 학습해보겠습니다.순서는 set container -> set의 사용법 -> set의 생성자와 연산자 -> set의 멤버 함수 -> 다양한 듯 다양하지 않은 예제 순으로 정리 해보겠습니다.우선 연관컨테이너들의 공통적인 특징은 아래와 같습니다. 1. 노드 기반 컨테이너 2. 균형 이진트리로 구현 3. 멤버 변수, 생성자 등이 99프로 같습니다. 1) set container 연관 컨테이너(associative container) 중 하나입니다. 노드 기반 컨테이너 이며 균형 이진트리로 구현되어있습니다. Key라 불리는 원소들의 집합으로 이루어진 컨테이너 입니다. (원소 = ke..

[백준 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++] list container 정리 및 사용법

안녕하세요, BlockDMask 입니다.오늘은 STL의 sequence container 의 vector, deque, list중 세번째 인 list에 대해서 알아보겠습니다.날이 정말 덥군요. 저는 시원한 카페에 앉아서 포스팅 해보도록하겠습니다. 'ㅁ'저는 자료구조를 C언어로 배웠는데요. C++의 list는 딱 더블 링크드리스트(doubly linked list)와 구조가 같습니다. 다만 C++에서는... 미리 구현되어있다는 점이 다릅니다.C에서는 자료구조를 사용하려면 처음부터 만들어서 사용했었었는데, 너무 편하고 좋네요.이렇게 도구가 많아도 제대로 사용할 줄 알아야 자신의 도구가 되겠죠?그럼 정리내용을 보러 가겠습니다. 1) list container 시퀀스 컨테이너 (sequence container..

[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 미만의 범위의 인자를 삭제 한다는 뜻입니다.그림으로 ..