분류 전체보기
[백준 1463번][C++] 1로 만들기
그래프를 만든 후 DFS를 실행하는 간단한 문제입니다 아직 그래프 만드는 방식이 익숙하지 않아 코드를 약간 길게 작성하였습니다ㅠ #include #include using namespace std; #define Not_Visited 0; #define Visited 1; //감염시킨 컴퓨터의 수 int cnt = 0; //각 컴퓨터의 정보를 저장하는 Computer 클래스 class Computer { public: int IsVisited; //방문 여부 int data; //노드 숫자 vector list; //인접한 컴퓨터 저장 Computer(int data) { IsVisited = 0; this->data = data; } ~Computer() {} }; //전체 컴퓨터를 저장하는 리스트 v..
[백준 1966번][C++] 프린터 큐
같은 우선순위 내에서 비교하는 방법을 찾아야했던 문제 #include #include #include using namespace std; //우선순위들을 담을 PAIR QUEUE queue q; //최대 우선순위 큐가 나올때까지 큐를 순환시키는 하ㅏㅁ수 int delt_idx(int p) { //우선순위 p가 나올때까지 q안에 있는 우선순위를 뒤로 보낸다 while (q.front().first != p) { q.push(q.front()); q.pop(); } //우선순위 p와 같은 q원소의 2번째 인자 반환 return q.front().second; } int main() { int test; cin >> test; int total, index; int rank; while (test--) { ..
[백준 2010번][C++] 플러그
플러그의 개수가 주어지고 플러그 마다 꽂을 수 있는 개수가 주어질때 연결할 수 있는 컴퓨터의 개수를 구하는 문제입니다 여기서 주의할 점은각 플러그마다 한자리는 다음 플러그의 전원이 꽂힌다는 점입니다 물론 마지막 플러그에서는 낭비없이 모두 전원에 연결할 수 있겠죠 따라서 마지막 플러그를 제외하고 플러그마다 -1를 해준 값이 컴퓨터를 연결할 수있는 값이 됩니다! #include using namespace std; int main() { int num; cin >> num; //멀티탭의 개수 int sum=0; //총 꽂을 수 있는 컴퓨터 개수 int plug; //플러그마다 꽂을 수 있는 개수 //마지막 플러그를 제외한 총 꽂을 수 있는 개수 for(int i=0;i> plug; sum += plug - ..
[백준 2609번][C++] 최대 공약수와 최소 공배수
유클리드 호제법을 이용한 최대공약수와 최소공배수 구하기 코드는 어렵게 적어놓았지만 기본 개념은 상당히 간단합니다! 두 수를 A와 B라고 했을때 A%B = 0 이라고 했을 때 A는 B의 배수이기 때문에 최대 공약수는 B입니다 이런 사실에 대해 A%B가 0이 아닌 C라고 가정했을 때 A와 B의 최대 공약수는 B와 C의 최대공약수와 같다는 원리가 유클리드 호제법입니다. 따라서 ? % ? = ? 의 기본식에서 나머지가 0이 될 때까지 값들을 업데이트 해준다면 쉽게 찾을 수 있습니다 또한 최소공배수와 최대공약수를 곱한 값은 두 수를 곱한 값과 동일합니다. #include using namespace std; //유클리드 호제법을 이용한 최대 공약수 구하기 int gcd(int n1, int n2) { int mo..
![[입출력] ios::sync_with_stdio(0) / cin.tie(0)를 쓰는 이유](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbENI6o%2FbtrGRHdxS8c%2FAAAAAAAAAAAAAAAAAAAAACkD7MThOiOCM708B4ZtijKbYpz1lo7WVCPAoi0HZGt0%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3Dh3rvcaXi3W2%252F2hYnqmMb%252F9LKrs8%253D)
[입출력] ios::sync_with_stdio(0) / cin.tie(0)를 쓰는 이유
많은 백준 / 프로그래머스 등 온라인 저지 사이트를 사용하며 '시간초과'가 나는 것을 간간히 볼 수 있습니다. 일반적인 환경이라면 C의 입출력 stream과 C++의 입출력 stream을 혼용하여 사용할 수 있습니다. 하지만 혼용사용시 두 입출력의 동기화 과정에서 실행 속도가 느려질 수 있기 때문에 ios::sync_with_stdio(0); 위의 명령어를 통해 한 쪽만 사용할 수 있도록 하면 실행시간을 절약할 수 있습니다. 또한 C++입출력에서의 cin과 cout은 서로 묶여있어 작성 순서에 따라 실행되게 되는데요 cin.tie(0); 위 명령어를 통해 순서에 관계없이 자료를 입력 / 출력하기 때문에 수행시간을 더욱 가속화 시켜줄 수 있습니다
[자료구조] 스택과 큐 (상시 업데이트)
STACK 헤더파일 - 선언 방법 stack 변수이름 [ ex) stack st ] 제공 함수(stack ST) ST.push(num) QUEUE 헤더파일 -
[phython] 파이썬 주석 달기(단축키 feat.파이참)
파이썬 주석에는 #,""",''' 등이 있습니다. 순차적으로 1) 한줄만 주석달기 : # #주석 입니다. print("주석 테스트 입니다.") 이와 같이 문장의 앞에 #을 붙여주면 됩니다. 2) 여러줄 주석달기 : """-""" or '''-''' """여러줄 주석입니다""" print("주석 테스트 입니다.") '''여러줄 주석입니다''' print("주석 테스트 입니다.") 마찬가지로 문장 양옆에 따옴표를 붙여주면 되는데요, 큰따옴표/작은따옴표를 구분하지 않습니다. 3) 주석 단축키 주석 단축키는 phython IDEL / 파이참 / Window / Mac 에 따라 모두 다른데요 저는 Window에서 파이참을 기준으로 설명드리겠습니다. ctrl + / 키로 주석 설정과 해제 모두 가능합니다! ※주의 ..
![[C++] 최대 공약수, 최소 공배수 함수 직접 만들기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F7ZTDo%2FbtrCuVobBf2%2FAAAAAAAAAAAAAAAAAAAAADxCZJpKSwy82sd9PR7pTKW1zkqCLLEYTm7ahY30MaN3%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DhDCr%252FNuURw7a3ie7k1bvnZT9ltg%253D)
[C++] 최대 공약수, 최소 공배수 함수 직접 만들기
프로그램에서 최대공약수를 직접 구하기 위해서는 유클리드 호제법을 이용해야 합니다. ※유클리드 호제법이란 두 수 A와 B의 최대 공약수를 구하기 위해서는 유클리드 호제법을 이용해 몫과 나머지를 이용하여야 합니다. 두 수가 최대 공약수 G를 가질 때 A와 B는 A=Ga / B=Gb 로 나타낼 수 있습니다. 또한, A를 B로 나눌 때 A = B * Q + R 이라는 식을 도출할 수 있습니다. 이 식은 Ga=GbQ+R과 Ga-GbQ=R ..... G(a-bQ)=R 로 바뀌며 나머지는 G라는 최대 공약수를 가짐을 보입니다. 따라서 A를 B로 나눌 때의 나머지도 같은 최대공약수를 가짐을 이용하여 나머지가 0이 될때까지 연산을 수행합니다. 먼저 최대공약수를 구하는 checkmin 함수 입니다. int checkmin..
![[C++]소수점 이하의 부분을 출력하는 법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fs6TY2%2FbtrBSHpC3Uo%2FAAAAAAAAAAAAAAAAAAAAACZygIglH8yGrjzXT78ouDly1hrf29Ldcw-PIgfwBOC-%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DcluJeHKXC%252F%252BPE6GQrXXo%252Bbr6oE4%253D)
[C++]소수점 이하의 부분을 출력하는 법
이번에는 소수점 이하의 자리를 출력하는 법을 포스팅해보겠습니다! 정수와 달리 소수점이 있는 수를 출력하기 위해서는 함수를 추가해야 하는데요. cout.precision() cout
![[C++]문자열을 숫자로 배열하는 법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FDREga%2FbtrBn5MmFAP%2FAAAAAAAAAAAAAAAAAAAAALqKjmtpRtSORqlHxJpBZQtjyp6caP-Ecxume4V1CNqo%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DMmtAlBXyPXOYlOyzcAFzBzhOwcY%253D)
[C++]문자열을 숫자로 배열하는 법
int에서 double, float에서 int 등 숫자간 변환은 캐스팅을 이용하여 간편하게 할 수 있다. 하지만 문자열을 숫자로 변환하고 싶을 때는 어떡할까? c++에서는 기본적인 함수들을 제공하고 있습니다 stoi / stof / stol / stoll / stod 등의 함수가 존재합니다. 이 함수들의 원형은 int stoi(const string& str, size_t* poi = 0, int base = 10); 같이 어렵게 정의되어 있는데요 간단히 보시고 이런 원형은 추후에 알아보도록 하고, 간단히 쓸 수 있는 방법부터 천천히 알아보겠습니다! #include #include using namespace std; int main() { string str1 = "86"; string str2 = "..