백준 85

[백준/C++] 17087: 숨바꼭질 6

이 문제를 이해해보면 최대공약수를 구하는 문제이다. 최대공약수를 구할 수 있는 재귀함수를 선언하고 진행한다. #include #include using namespace std;int 최대공약수(int a, int b) { //a가 더 커야 됨 if (b == 0) { return a; } return 최대공약수(b, a % b);}int 숨바꼭질(int s, vector v) { int result = v[0]; for (int i = 1;i > n >> s; vector v(n); while (n--) { int a; cin >> a; v.push_back(abs(s-a)); } cout

백준 2025.03.06

[백준/C++] 2840: 행운의 바퀴

처음에 문제 이해가 너무 어려워서 노트에 따로 정리해가며 문제를 이해했다. 바퀴가 시계 방향으로 돌아가기 때문에 그 반대 방향으로 화살표가 움직일 것이다. 이를 이해하고 나서 문제를 풀어야 한다. 글자가 들어올 때 추가해주고, 만약 같은 문자를 두 번 적는다고 했을 때 오류이므로 그것도 확인해줘야 한다. (이건 백준 예제 입력, 출력에 없어서 질문을 통해 알아냈다.)#include #include using namespace std;void 회전판(int n, int k) { vector v(n, '?'); //다 ?로 초기화 int now = n-1; //현재 가리키고 있는 인덱스 번호 while(k--) { int s; char c; cin >> s >> c; ..

백준 2025.03.06

[백준/C++] 4949: 균형잡힌 세상

이거는 어떻게 해결해야 될지 감도 안 왔다. 그래서 알튜비튜 피피티 자료를 보며 힌트를 얻었다.이것도 마찬가지로 double ended queue를 사용하면 쉽게 해결할 수 있다. [나 (가 들어올 때 queue에 넣고, ]나 )가 들어오면 queue에 짝이 있는지 점검 후 참 거짓을 나타내면 된다.#include #include #include using namespace std;bool 균형(string s) { deque q; for (char c : s) { if (c == '[' || c=='(') { q.push_back(c); } else if (c == ']' || c==')') { if (q.empty()) return fa..

백준 2025.02.26

[백준/C++] 2164: 카드2

#include #include using namespace std;int card(int n) { deque card; //순서대로 입력 for (int i=1;i 1) { card.pop_front(); int front = card.front(); card.pop_front(); card.push_back(front); } return card.front();}int main() { int n; cin >> n; int result = card(n); cout double ended queue를 쓰면 된다. 쉽게 풀기 완료! 첫번째 카드를 pop해서 없애면, 앞에 있는 카드를 뒤로 보낼 수 있다. 이렇게 계속해서 반복.

백준 2025.02.26

[백준/C++] 10757: 큰 수 A+B

메모리가 엄청 커서 int 자료형이나 long long 자료형으로는 사용할 수 없다. string으로 써야 한다.#include #include using namespace std;string Add(string s1, string s2) { string A = ""; string B = ""; //항상 s1이 자릿수가 더 많게 if (s1.length() 0) { //둘의 자리수가 안 맞으면 int 차이 = A.length() - B.length(); string 빈칸 = ""; while (차이 != 0) { 빈칸 += "0"; 차이--; } B = 빈칸 + B; ..

백준 2025.02.24

[백준/C++] 11478: 서로 다른 부분 문자열의 개수

#include #include #include using namespace std;int main() { string s; cin >> s; set result; for (int i = 0;i 우선 알파벳들을 입력받고, 서로 다른 문자열의 개수를 세어야 하기 때문에 중복을 무시하는 set을 사용할 것이다. set에 담아줄 건데, 이중 for문을 사용할 것이다.여기서 헷갈림 주의! i가 0일 때를 시작으로 string s1="";로 초기화해준다. 그 상태에서 j가 늘어남에 따라 set에 넣을 건데만약 처음에 입력한 string값이 hongsi라고 해보자. 그러면 맨 처음에 set에 들어가는 값은 h가 될 것이다. 여기까진 ok다음으로 들어가는 것은 s1+='o'가 될 것이다. 그럼 앞에 h가 있었기 때..

백준 2025.02.18

[백준/C++] 1431: 시리얼 번호

#include #include #include #include using namespace std;bool compare(string s1, string s2) { //길이가 다르면 if (s1.size() != s2.size()) { return s1.size() = 0 && s1[i] - '0' = 0 && s2[i] - '0' ser_no; int n; cin >> n; for (int i = 0;i > s; ser_no.push_back(s); } sort(ser_no.begin(), ser_no.end(), compare); for (int i = 0;i int main이 나오기 전에 bool compare 함수가 나와줘야 하는 것 주의. main이 나오기 전에 이미 컴파일되어 있어야 한..

백준 2025.02.18

[백준/C++] 19636: 요요 시뮬레이션

#include #include using namespace std;int main() { int w, i0, t, d, input, output; cin >> w >> i0 >> t; cin >> d >> input >> output; int w1 = w; int w2 = w; int i2 = i0; //1. 일일 기초 대사량 변화를 고려하지 않았을 때 for (int day = 0; day t) { //기초대사량 변화 역치보다 많다면 i2 += floor((input - (i2 + output)) / 2.0); //일일 기초대사량 변화. } } if (w1 0) { //요요 cout 일일 기초 대사량 변화를 고려하지 않았을 때와 고려했을 때를 잘 판단하여 코드를 작성해야 한다. 이때 ..

백준 2025.02.18