[algorithm] 백준 11328번 Strfry
·
algorithm/배열
두 개의 문자열이 주어졌을 때 문자열의 순서를 재배치해서두 문자열이 같아질 수 있는 지 확인하는 문제이다 #include #include #include using namespace std;int main() { int a; string i,j; cin >> a; for(int tmp=0; tmp> i >> j; sort(i.begin(), i.end()); sort(j.begin(), j.end()); if (i==j) cout 두 문자열을 정렬만 해주고같은지 비교만 하면 되는 간단한 로직으로 해결했다 // Authored by : OceanShape// Co-authored by : BaaaaaaaaaaarkingDog..
[algorithm] 백준 13300번 방 배정
·
algorithm/배열
이 문제는 내 기준에선 꽤나 어려웠다문제 구조 자체는 쉬워보이나내부적인 로직을 짤때나 계산 과정이 마냥 쉽지만은 않아 어려움을 겪었다 #include #include using namespace std;int main() { int n,k; int a,b; int man = 0; int woman = 0; int room = 0; vector vec1; vector vec2; vector vec3; vector vec4; vector vec5; vector vec6; cin >> n >> k; for (int tmp=0; tmp> a >> b; if(b == 1) vec1.push_back(a); ..
[algorithm] 백준 1475번 방 번호
·
algorithm/배열
이 문제는 0~9까지의 숫자세트를 총 몇번 사용해야주어진 숫자를 완성시킬 수 있는 지 알아내야하는 문제다 6,9는 뒤집어서 사용 가능한 점이 포인트다 #include #include #include #include using namespace std;int main() { int a; int arr[10] = {}; cin >> a; string b = to_string(a); for(char tmp : b) { if((tmp-'0' == 9) && (arr[6] arr[9])) arr[9]++; else arr[tmp-'0']++; } cout 우선 char타입의 문자 - 문자는 int타입으로 나..
[algorithm] 백준 10807번 개수 세기
·
algorithm/배열
#include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); int a,b,c; int arr[100] = {}; cin >> a; for (int i=0; i> b; arr[i] = b; } cin >> c; int cnt = 0; for (int i=0; i N이 1 ~ 100까지므로 배열을 100의 크기로 선언해주고배열을 돌면서 주어진 수와 일치하는 지 판단하고일치하면 개수를 카운트해주는 방식으로 하는 간단한 문제이다 중간에 cnt값을 0으로 초기화해주지 않으면 쓰레기값이 들어가고 전역변수로 설정한다면 0으로 ..
[algorithm] 백준 2577번 숫자의 개수
·
algorithm/배열
이 문제는 10808번과 유사하게아스키코드를 활용해서 풀면 되는 문제다#include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); int a,b,c; cin >> a >> b >> c; int arr[10] = {}; int i = a*b*c; string j = to_string(i); for(int tmp : j) { arr[tmp-48]++; } for(int tmp : arr) { cout 똑같이 배열의 원소값을 숫자의 등장횟수로 정하고0의 아스키코드 값..
[algorithm] 백준 10808번 알파벳 개수
·
algorithm/배열
처음 이 문제를 봤을 때 a~z까지의 배열을 생성해서 하나씩 카운트해야되나? 라는 생각이 들었다하지만 너무 비효율적이여서아스키코드로 해결하면 좋겠다고 생각했다 a의 아스키코드 값이 97고,b는 98이라는 점을 이용해문자열을 순회하면서 하나씩 카운팅 해주는 방식으로 풀었다 #include #include #include using namespace std;int main() { int a[26] = {}; string str; cin >> str; for(int c : str) { c -= 97; a[c]++; } for(int b : a) { cout 배열을 26으로 잡은 이유는 ..
[algorithm] 스택(Stack), 큐(queue), 덱(deque)
·
algorithm/theory
스택?스택은 간단히 말해서 한 쪽 끝에서만 원소를 넣거나 뺄 수 있는 자료구조이다구조적으로 먼저들어간 원소가 가장 마지막에 나오므로FILO(Fist In Last Out) 라고도 불린다 위 사진은 접시를 쌓아올린 것이다일상 속 스택으로 접시더미에서 접시의 추가나 제거가 맨 위에서만 가능해 스택이라고 볼 수 있다자료구조 상에서의 스택을 그림으로 표현하면 위와 같다 스택은 성질로는원소의 추가/제거가 O(1)이고제일 상단 원소 확인이 O(1)이다 STL stack으로 스택을 활용할 수 있다int main(void) { stack S; S.push(10); // 10 S.push(20); // 10 20 S.push(30); // 10 20 30 cout 스택이 비어있을 때 top(), pop()을 호..
[algorithm] 연결 리스트(Linked list)
·
algorithm/theory
연결리스트?원소들을 저장할 때 데이터와 그 다음 원소의 위치를 포함하여 저장하는 자료구조이다연결리스트는 실제 메모리 공간에서 아무런 규칙없이 저장되기에각 node가 다음 원소의 위치를 화살표로 연결시켰다고하면 이해하기 쉽다 각 노드가 두개로 분리되어있는 이유는데이터를 저장하는 변수와 다음 데이터를 가리키는 포인터 변수로 구성되어있기 때문이다 연결리스트의 성질만 우선 나열해보자면1. k번째 원소를 확인/변경하기 위해 O(k)가 필요함2. 임의의 위치에 원소를 추가/제거는 O(1)가 필요함 배열과 비교하면1. k번째 원소를 확인/변경 위해 O(1) 필요함2. 임의의 위치에 원소를 추가/제거는 O(k)가 필요함 연결리스트는 2번 성질이 가장 큰 장점이고연결리스트를 사용하는 이유이다 하지만 인덱싱이 불가능하다는..
[algorithm] 백준 2562번 최댓값
·
algorithm/기초 코드
수를 입력받고 그 중 가장 큰 수를 찾고그게 몇번째 수인지 알아내면되는 간단한 문제이다 수를 배열에 넣었다고 치면 0번째 요소가 가장 큰 수라면 최댓값이 1번째 수로 되도록 출력해야한다.#include #include #include using namespace std;int main() { cin.tie(0); ios::sync_with_stdio(0); int a; int max_value=0; vector vec(10); for (int tmp=1; tmp> a; vec.at(tmp) = a; } for (int tmp : vec) { if (tmp > max_value) ..
[algorithm] 백준 2438번 별찍기 - 1
·
algorithm/기초 코드
for문을 활용하는 대표적인 문제이다#include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); int a; cin >> a; for (int tmp=1; tmp 정석 풀이는 이중 for문으로 한 줄 씩 찍어나가는 풀이지만string 함수를 사용한 풀이도 있어 소개하려고 한다string 함수는 특정 문자를 반복해서 출력하고 싶을 때 사용하면 편리하다 #include 을 선언해야 하고첫번째 파라미터에는 int타입의 숫자가 들어가야하고두번째 파라미터에는 char타입의 문자가 들어가야한다즉 string(tmp, "*")은 tmp번 반복되는 *을 생성하라는 의미이다 정석적인 풀이도 소개해보..