
C++ 에는 3가지 입출력 방식이있다. iostream, stdio.h, cstdio 이다.C++의 표준 입출력 방식이다.생략C의 표준 라이브러리로, : C++ 은 기본적으로 C의 표준 라이브러리를 사용할 수 있다.printf는 형식 지정자 자리에 a, b, c, st

이 문제도 기본 입출력 문제이다 . 마찬가지로 <iostream>, <stdio.h>, <cstdio> 로 풀었다.cin으로 라이브러리 버퍼에 저장된 값 읽을때 자료형은 내가 변수를 어떤 타입으로 선언했는지에 따라서 달라진다.내가 위처럼 int a 로

기본 입출력문제이다. C++에서 입출력은 <iostream>, <stdio.h>, <cstdio> 이렇게 총 3가지 방법이 있다.처음에 이렇게했다가 틀렸다. 뭔가 느낌상 저렇게하면 라이브러리 버퍼에서 공백 단위로 끊어서 a,b에 값들을 잘 넣어줄 것 같
아,,씁다 이 문제는 부동소수점과 실수 자료형+오차 범위, 출력 형식 에 대해서 정확히 알아야 풀 수 있는 문제이다. 1. 부동 소수점과 실수 자료형 C 언어에서 float과 double 자료형은 실수를 부동소수점(Floating Point) 방식으로 표현한다. ±1.xxxxxxxx*2^(xxxx) 이 방식은 IEEE 754 표준을 따르며, 정밀도...

이렇게 한 줄 입력하고 endl로 \\n + flush 해주는 식으로 했다.이렇게 한 줄 입력하고 \\n 해주는 식으로 했다.위의 방법보다 방금 endl쓰지 않고 코드짠 방법이 더욱 빠르게 입출력을 처리한다. 더 성능이 좋은 코드이다.과int main() { in

그냥 라이브러리 버퍼 읽어서 ??! 붙여서 다시 출력하는 문자열 문제이다.string으로 입력 스트림을 받은 다음에 문자열을 이어붙이는 연산자 +를 사용해서 두 문자열을 이어붙여서 출력했다.다만, 보통 char 배열 (char\[]) 에 문자열을 저장해서 사용한다.위와

이런식으로 한 줄 한 줄 출력하고싶은 경우 cout << 출력할 내용 << "\\n"; 해주면된다.마찬가지이다.이런식으로 한 줄 한 줄 출력하고싶은 경우 printf(%d\\n, a); 해주면된다.cin, scanf 모두 공백 단위로 받는다는거 잊

곱셈 과정과 결과를 출력하는 문제이다.중요한것은 472는 고정이고 우리가 인덱스 뽑아와서 쓰는거는 385 뿐이다.그래서 472는 맘편히 int로 받아도된다.풀이 방법은 3가지가있다.(1) C 스타일 -> char 배열 + stdlib.h 헤더의 atoi(배열)(2) C

잘 보면,1<=A,B,C<=10^(12) 라는 조건이 있다.즉 매우 큰수를 담을 수 있는 정수자료형이 필요하다.int는 컴파일러가 동작하는 환경에 따라 자료형의 크기가 달라진다. 즉, 크기가 가변적이다.그래서 정수라고 무지성 int 쓰면 안된다. 백준의 채

조건문 문제이다.풀이방법은 iostream, cstdio, stdio.h가 있다.iostream과 stdio.h로 풀어볼 것이다.처음에 이런식으로 코드를 짰다.생각해보니 a>=80 && a<=89 와같은 식으로 조건문을 작성할 필요가없었다.그냥 a>=90, a>=

요약하자면, 입력 받은 시간에서 45분을 뺀 시간을 출력하면된다.이렇게했는데, 코드가 비효율적인 것 같다.위는 해당 문제를 구글링해서 얻은 모범답안이다.입력한 분이45분보다 작은 경우 입력한 분에 +15분만 해주면 45분을 뺀 시간이 나오는 것을 이용한 풀이이다.h=0

주의할 점은 분이 60 이상이면 시를 1 증가시켜주는 것, 24,25,26시,, 는 0,1,2,,,시로 표시하는 것 이다.이를 위해서 우선 전부 분 단위로 변환하고 그다음에 시,분을 각각 구해주는 방법을 선택했다.위의 방법으로하면 자리올림 같은 경우 신경안써줘도되고 편
1. (1) 세 주사위 값이 같은지 확인하기 세 주사위를 던지는 경우, (1) 3개 전부 같다 (2) 2개가 같다 (3) 0개가 같다 (=전부 다르다) 이 3가지의 경우가 존재하니, 이를 기준으로 조건문을 사용해 분기 처리하면된다. (2) 세 주사위 값 중 최댓값 찾기 - 방법1 위의 문제의 경우 2가지가 고민이다. (1) 어떻게 같은지를 찾...

위와같이 C++ 표준 라이브러리에 정의된 자료형은 전부 출력이 가능하다.처음에 이렇게했다. 형식 지정자를 잘 사용하지 못했다.C언어의 형식 지정자를 잘 활용하는 위의 코드가 간결하고 좋은 방법인듯하다.printf() 또는 scanf() 사용시 데이터를 설정한 형식 지정

1. 프로그램 기본 구조 \#include : 컴파일 지시어로, 헤더 파일을 복붙해주는 기능을 수행한다 using namespace std : std::cout 대신 그냥 cout 으로 쓸 수 있게 해준다. (namespace 관련 개념으로, 뒤에서 다룰 것이다)

모두들 알 것이라 생각한다.모두들 알 것이라 생각한다.모두들 알 것이라 생각한다.C++에서 함수는선언은 호출보다 위에 있어야한다.정의는 호출보다 밑에 있어도된다.위의 경우 func2(a) 하면 a의 값이 100으로 수정된다.⚠️ 코테 핵심: 벡터나 문자열을 함수에 넘길

보통 정수형은 int를 사용하나, 크기가 큰 정수를 저장할때는 long long을 사용한다.위의 예시들에 대해서 하나 하나 살펴볼 것이다.위의 경우 a \* b 수행시 int (4 Byte)에 10000000000(0b 0010 0101 0100 0000 1011 11

지역,전역 변수와 마찬가지로 지역 변수는 초기화 X시 쓰레기 값이 들어가고 전역 변수는 초기화 X시 자동으로 0이 들어간다.위와같이 memset()이나 fill()을 통해 배열을 초기화할 수 있다.⚠️ memset 주의: 0과 -1만 안전하게 동작. 다른 값(예: 1,

데이터를 담아서 관리하는 자료구조동적 배열로, 크기를 자유롭게 변경할 수 있다.코테 사용처: 괄호 검사, 후위 표기식, 히스토리/되돌리기코테 사용처: BFS (너비 우선 탐색) ← 엄청 자주!양쪽(front / back)에서 삽입과 삭제 모두 가능코테 사용처: 슬라이딩

C++ 이스케이프 시퀀스(escape sequence)는 문자/문자열 리터럴 안에서 특수문자(개행, 탭, 따옴표 등)를 표현하거나, 직접 쓰기 어려운 문자를 \\로 시작하는 표기로 넣는 문법자주 사용하는 escape 문 은 위와 같다.escape문 관련하여 고양이 그리

escape문(원래 기능에서 escape 시키는 문자)을 활용하여 특수한 기능이 있는 문자를 일반 문자로 인식시키는 문제이다.지금 고양이를 이루는 문자 중 \\. ' 는 특수한 기능이 존재한다.그래서 모든 \\. ' 앞에 \\를 한 개 씩 붙여주면 된다.풀이는 <

백준 1,2 단계 복습을 완료했다.입출력, 조건문은 이제 익숙해진듯하다.

문제는 위와 같다.문제에서 몇 개의 입력이 들어오는지 알려준다 (N)그래서 이 N 값을 먼저 입력받고, 이를 기반으로 for문을 활용해 문제에서 주어지는 입력만큼 반복해서 여러번 값을 입력 받으면된다.사실 처음에 변수 이름 뭘로 하지에 대해 고민을 하느라 시간을 조금

위의 문제의 경우 테스트 케이스의 개수가 1,000,000개로 매우 많은 반면,시간 제한은 1초이다.이런 경우, 일반적인 <iostream>의 cin,cout 을 활용한 방법으로 입,출력을 하게되면 시간 초과 에러가 발생한다.그렇다면 어떤 방식으로 입,출력을 해야

이 문제는 앞서 풀었던 다른 문제들과 다르게 입력 횟수를 모르는채로 입력을 받아야한다.이를 위해서는 백준의 채점 시스템 과 EOF(End Of File) 의 개념에 대해 알아야한다.백준은 채점 과정에서 여러 입력을 정의해둔 파일을 나의 코드에 표준 입력으로 넣어준다.

여러개의 정수를 입력 받고, 그중에서 특정 정수가 몇번 등장했는지 출력하는 문제이다.이 문제는 2가지 풀이법이 있다.(1) 정수의 범위가 -100~100 이니 size가 201인 1차원 배열을 만들고 입력 받은 정수 + 100을 인덱스로 배열에 등장 횟수를 누적하기(2

위의 문제의 경우 2가지 풀이 방법이 존재한다.(1) 배열에 전부 넣어서 정렬(2) 배열에 넣지않고 정수 입력 받을때, 그때그때 최소,최댓값 갱신C++에서 배열의 정렬 기능을 사용하기 위해서는 <algorithm> 헤더의 함수를 사용해야한다.이때 주의할점이 배열의

바구니에 이미 바구니 번호와 동일한 숫자가 적힌 공이 들어가있고, 입력에 따라 바구니에 들어가있는 공들을 swap 하는 문제이다.바구니 = 자료구조 = 1차원 배열로 생각하면되고, 바구니에 들어있는 공에 적힌 숫자를 배열의 요소로 생각하면된다.공을 바꾸는 swap 은

이 문제는 서로 다른 요소의 개수를 세는 문제이다.나는 2가지 방법으로 풀어보았다.(1) 입력받은 값을 42로 나눈 나머지를 배열의 인덱스로 쓰고, 등장할때마다 해당 인덱스의 값을1 증가시키고 -> 배열을 순회하며 값이 1 이상인 요소를 만나면 카운트 변수를 1씩 증가

위의 예제 입력으로 진행해보면12345 -> 21345 -> 21435 -> 34125 와 같이 수행되어 3 4 1 2 5 의 결과를 얻는다.이러한 reverse (=구간 swap) 는 반복문 + <algorithm> 헤더의 swap(a,b) 로 구현이 가능하다.

1차원 배열 챕터를 다 풀어보았다.느낀점으로는,배열은 <algorithm> 헤더의 max(a,b), sort(시작 주소, 끝 주소), swap(a, b) 로 거의 다 풀린다.배열의 인덱스를 활용해서 정보를 나타낼수도있고, 배열의 요소를 활용해서 정보를 나타낼 수도

이 문제는 char 자료형에 대해 이해하기에 매우 좋은 문제인 것 같다.입력 받은 문자의 아스키코드를 출력하는 문제이다.어떻게 해야할까? 2가지 방법이 존재한다.문자를 char 자료형 으로 입력을 받는다. (그러면 A를 입력받을때 'A'가 char 변수에 저장되고, c

풀다보니 매우 좋은 풀이가 있어서 가져와봤다.나는 이렇게 풀었다.fill() 로 배열을 -1로 초기화하고, 문자열을 순회하며 값이 -1인 인덱스의 요소를 문자열에서 등장 위치로 설정했다.(아스키코드를 활용해 char를 int로 변환했다)지금 보면 굳이 안써도되는 배열과

처음에 어떻게 풀지 막막했었는데 어찌저찌 풀긴 풀었다.우선, 테스트 케이스 수, 반복 횟수, 문자열을 입력받는다.이후 문자열의 각 인덱스에 해당하는 문자에 대하여 입력받은 횟수 만큼 반복을 수행하고 total에 +로 문자열을 이어붙인다.이렇게 반복이 완료된 문자열을 완

두 개의 수를 입력받고, 역순으로 바꿔서 둘 중 더큰 숫자를 출력하는 문제이다.reverse(s.begin(), s.end())를 사용하기위해 두 숫자를 공백 기준으로 string으로 입력 받았다.이후 reverse()를 각각 취해주고 stoi()로 int로 변환한 다

다이얼을 돌릴때 걸리는 총 시간을 구하는 문제이다.1을 누를때 2초가 걸리고, 숫자가 1씩 증가할때 마다 걸리는 시간도 1씩 증가한다.또한 주요 특징으로 A,B,C,,,,MNO 까지는 3개의 알파벳을 단위로 숫자가 정해지는데, P~Z 까지는 4개,3개, 4개 단위로 숫

앞서 풀어봤던 문제와 비슷하게 입력을 몇 줄 주는지 나와있지않다.이런 문제에선 항상 "그럼 언제 반복을 중지해야하는가?"에 대한 고민이 생긴다.이는 EOF()를 체크하는 문제이다.앞서 (cin >> a >> b).eof() 또는 while(c >> a >> b)와 같은

Temp Body

다이아몬드 형태로 별을 찍는 문제이다.다이아몬드가 대칭임을 이용해 절댓값을 반환하는 <iostream\\> 헤더의 함수인 abs()를 활용해서 반복 조건을 구성했다.이런 문제는 절반을 넘어가면 규칙이 바뀌기에 구간을 나눠서 풀어주는 것이 좋다.구간은 0~N, 0~

주어진 단어를 입력받아서 가장 많이 나온 문자를 출력하는 문제이다.이 문제의 핵심은알파벳은 총 26개이다. (소문자 26개, 대문자 26개)입력이 소/대문자 섞여서 등장하니 소문자 or 대문자로 통일시키기배열의 데이터로 각 알파벳의 등장 횟수 카운트하기몇 번째 알파벳

단어를 입력받아서 단어를 이루는 크로아티아 알파벳의 갯수를 카운트하는 문제이다.주의해야할 점은(1) 크로아티아 알파벳이 중복으로 있을 수 있다.는 것이다.우선 크로아티아 알파벳으로 인식되는 문자열을 배열에 저장해둔다.이후, 입력값을 받아서 s.find(s1)으로 배열에

그룹 단어의 개수를 출력하는 문제이다.핵심은 문자열을 순회하며, 직전 문자와 동일하지 않은데 이미 과거에 등장했던 문자가 등장하는 경우 를 찾아내는 것이다.이게 처음 나의 풀이이다. (사실 진짜 처음 풀이에서는 매 단어마다 배열을 0으로 초기화하는것을 깜빡해서 틀렸었

문제가 길지만, 결국 학점을 계산하는 문제이다.A+,A0,B+,,,D0,F,P 등의 학점을 어떻게 숫자에 매핑시킬지가 관건이다.(또한 자료형을 double을 써야한다. 평균 내야하므로)숫자의 규칙성을 기반으로 풀이했다.예를들어 4.5-'B'-'A' 를 하면 3.5 가

심화 1을 풀이 완료했다.어떤 기법을 어떤 문제에 적용해야할지 판단하는 능력이 중요한것같다.개강전까지 시간 복잡도 전까지 풀어야하는데, 열심히 해야겠다.개강하고 시간 복잡도 바로 들어가야한다.

이 문제는 어찌저찌 맞긴했지만, 내 풀이가 매우 매우 매우 매우 매우 매우 매우 매우 매우 비효율적이었을 뿐더러 배운 것도 매우 많은 문제였기에 가져와봤다.이 문제의 핵심은어떻게 공백(사실은 공백이 아니지만) 을 처리할 것 이냐?이다.실행하면 정답 처리가 되긴하나 문제

B 진법 수를 입력받아서 10진수로 출력하는 문제이다.이 문제의 핵심은(1) B 진법 -> 10진법 계산을 위한 누적 방식(2) char가 문자인지 숫자 인지 확인이다.왜 틀렸나 했는데, 바보같이 지수 연산자를 ^로 착각했다.C++ 에서 ^는 비트 xor 이다. 나는

2차원 배열 풀이 완료~!char 자료형은 참 신기하게도, 2가지 모습을 가진다.'a' 도 char 97 도 둘다 char 자료형 이다.또한 둘은 정확히 동일하다.'a' 는 표면적인 형태이고, char 97 은 내부적인 형태로 생각하면 된다.코드에 'a'라고 되있더라도

10진법 -> n진법으로 변환하는 문제이다.(1) 10진법 -> n진법 변환법 알기(2) 나머지가 10보다 크면 문자로 출력하기(3) 문자를 출력해야하니 -> string 사용이렇게 3개가 이 문제의 핵심이다.우선, 10진법 -> n진법은 아래와 같이 변환한다.쉽게

정답률이 낮길래 풀어봤다.근데 낮은 이유가 있었다.사실 문제 처음 봤을때는 입력이 매우 크길래 overflow 관련 함정이 있는 문제인 줄 알았는데 시간복잡도 관련 문제였다.입력 값이 매우 크므로 일반적인 반복문을 활용한 풀이로는 시간안에 답을 구할 수 없다.이렇게 반

지그재그 규칙으로 2차원 배열에 분수들이 존재한다.또한 홀수번 째 대각선이냐, 짝수번 째 대각선이냐에 따라서 분자, 분모의 규칙도 달라진다.따라서 우선은 몇 번째 대각선에 속하는 지를 알아야한다.이를 위해서 입력받은 x 에서 차례대로 1,2,3,,,l을 빼주며 언제 x

9명의 난쟁이 중에 2명의 가짜 난쟁이가 섞여있고, 7명의 난쟁이의 키의 총합이 100이다.입력으로 난쟁이의 키가 들어오고, 출력으로는 7명의 난쟁이의 키를 오름차순으로 출력해야한다.풀이 방법은(1) 순열 - next_permutation(2) 조합 - 9C2 (이중

우선 숫자를 세야한다. 동시간에 몇대가 겹치는지를 확인해야하니까.숫자,문자를 세는 경우 -> 카운팅 배열을 활용한다.입력에 차량의 입차가 1분, 출차가 6분이라고한다.\->1분 단위의 시작점을 인덱스로 활용한다.\-> 입차 1분, 출차 6분이면 인덱스 1,2,3,4,5

우선, 문제가 길어서 무엇보다도 문제 이해부터 잘 해야한다.정리하자면 패턴으로부터 접두사, 접미사를 추출해내고, 입력 받은 파일명에 접두사로 시작해서 접두사로 끝나는지 확인하고 적절한 반례를 처리하면 되는 문제이다.이렇게 풀었다.처음에는 split() 을 구현하여 접

구간합 유형의 문제로 psum\[]으로 풀이하면 된다.(psum은 prefix sum을 의미한다)주의할점은 입력의 n,k의 크기가 2~100000 이므로, O(n^2)이 되는 알고리즘은 사용하면 안된다. O(nlogn)까지만 사용 가능하다.또한 최댓값을 구해야하는데,

포켓몬의 이름, 도감 번호를 자료구조에 저장하고, 도감 번호를 받으면 포켓몬 이름을, 포켓몬 이름을 받으면 도감 번호를 저장해야한다.(1) 우선, 시간 복잡도를 따져봐야한다.입력은 M,N,도감번호 OR 포켓몬 이름이다.이중에서 M과 N이 시간복잡도에 중요하게 작용한다.

문자열을 입력받고 팰린드롬이 가능하다면 팰린드롬으로 만든 문자열을, 불가능하다면 "I'm Sorry Hansoo"를 출력하는 문제이다.문제를 잘 이해하는 것이 가장 중요하다. 특히 2가지 핵심 사항을 파악해야한다.홀수 번 등장한 문자의 개수가 2개 이상이면 팰린드롬이

간단한 조합 문제이다.중첩 for문으로 구현해도되고, 재귀로 구현해도된다.우선, 이 문제를 풀때 사실 처음에 중첩 for문으로 구현하면 시간복잡도가 O(N^2) 인데, 시간 초가계산해보면 2억(시간제한 2초)을 넘겨서 불가능할 것이라고 생각했다.근데 잘 생각해보니 상수

위 문제는 대표적인 Stack 을 사용해야하는 유형이다.짝짓기, 교차하지 않도록, 문자열 삭제..등등의 키워드가 등장하면 대부분 stack 을 활용하여 쉽게 풀 수 있다.일단 문제를 파악해보자.(1) 같은 글자간의 연결선이 교차하지 않으려면 최대한 연속인 애들끼리 연결

이 문제는 단순해보이지만 시간 복잡도, overflow, 홀수 지수에 대한 처리까지 총 3가지 난관이 존재한다.이때까지 풀었던 문제중에 가장 어려운 문제였다.사실 이런 문제는 즉석에서 절대 못풀고 O(logN) 시간 복잡도의 빠른 곱셈 코드 블럭 자체를 외우는 수 밖에

문제 자체는 간단하다. 백준 1629번 (곱셈)과 상당히 유사한 문제이다. 각 자릿수가 1인수(1,11,111,1111,11111,...) 중에서 가장 작은 n의 배수의 자릿수를 찾아야한다. 문제 이해가 잘 안될때는 예제 입력이 어떻게 예제 출력으로 나오는지를

주어진 맵을 탐색하며 연결된 컴포넌트의 개수를 찾는 문제이다.DFS여러번 갈겨주면 된다.main() 내부에서 DFS 호출전에 꼭!! if문으로 if(visited\[i]\[j]==0 && a\[i]\[j]==1)와 같이 방문 여부, 맵 상으로 1 여부 를 확인해줘야

DFS or BFS를 이용해서 연결 컴포넌트를 찾는 문제이다(나는 DFS로 풀 것이다). 그러나 기존에는 0,1로만 이루어진 맵을 DFS 로 탐색했다면, 이번에는 1~100 사이의 수로 이루어진 맵을 탐색해야한다.또한 비의 양 (0~100)에 대해서 모두 테스트해봐야
최소, 최대 그리고 있거나/없는 경우 코드가 동작하지 않는 반례가 있는지 잘 따져봐야한다.ret : 결과 저장ny : 다음 y 좌표nx : 다음 x 좌표cnt : 카운팅 배열 or 카운팅할때이런식으로 변수명을 통일해놔야 실수할 확률이 적어진다.

DFS를 이용하고, 전역변수 tmp를 이용하여 연결된 컴포넌트의 넓이를 구하는 코드이다.DFS를 이용하고, 전역변수 tmp없이 재귀를 이용하여 연결된 컴포넌트의 넓이를 구하는 코드이다.재귀를 이용해서 매번 호출마다 함수의 지역 변수에 1씩 더해주는 것이 인상적이었다.
맵을 탐색하며 최단 거리를 찾는 문제이다. 이차원 배열로 그래프를 구현한다. 그래프의 가중치가 전부 동일하므로 BFS를 활용해 최단거리를 찾으면된다. 1. 풀이 중요한 것은 (1) queue 에 2차원 좌표 저장을 위해 pair를 넣어야한다는 것 (2) any

업로드중..'주어진 입력을 가지고 어떻게 출력이 도출되냐?'를 생각해봤을때 -> 만약 탐색범위내에 다른 값이 발견되면 시작점이 바뀌고 탐색 범위가 줄어들며 동일한 로직을 반복한다 -> 분할 정복 유형으로, 재귀함수나 stack을 이용해서 풀이한다 -> 나는 매개변수를

map과 vector를 효율적으로 잘 쓰고 sort() 사용시 사용자 정의 비교함수 cmp로 비교를 진행하는 문제이다.수의 등장 횟수를 세야하므로 카운팅 배열을 사용하면된다.그러나 공간제한이 128mb로 int cnt100000000 하면 약 4억 바이트 쓰게되고, 공

구현문제이다. 모음인지 자음인지를 확인하는 함수 isvowel()을 정의해놓고 main에서 모음,자음 구분 필요할때마다 호출해서 확인한다.중요한것은..모음은 {a,e,i,o,u}로만 이루어져있고, 입력도 모음은 {a,e,i,o,u} 중에서만 나온다는 것이다.(나는 모
구현 문제이다. n줄에 걸쳐 소문자+숫자를 입력받고 그중에 숫자만 추출(앞에 붙은 0은 생략)해서 비내림차순으로 출력하는 문제이다. 처음에 그냥 "걍 대충 아스키코드 비교로 숫자 추출하고 순회하면서 0제거 해서 벡터에 넣어서 sort()조지면 돼지않을까?" 하고

팩토리얼 문제는 수가 기하급수적으로 커지기때문에 항상 자료형, 입력 범위를 잘 봐줘야한다.이 문제는 팩토리얼 문제인데, 심지어 입력도 <= 10억 조건이 걸려있다.O(logN)의 알고리즘만 사용이 가능하다.N!이 약수로 10을 몇개 가지는지 찾으면 N!뒤에 0이
업로드중..업로드중..1팀 VS 2팀 경기의 득점 정보를 입력받고, 이를 기반으로 각 팀이 몇분, 몇초 동안 승리를 유지하고 있었는지를 출력하는 문제이다.이 문제의 포인트는 3가지이다.(1) scnaf()로 시간, 분 나누어 입력받기(2) 분:초 형식의 시간 계산시 분
업로드중..업로드중..이 문제는 666이 들어가는 수 중에서 n 번째로 작은 수를 찾는 문제이다.처음에 조합,순열 이런 느낌으로도 풀어보려했으나, 잘 떠오르지 않았다.이 문제를 잘보면 N<=10000 이다. 따라서 내가 찾는 수는 아무리 커도 6660000 안에서

괄호 검사는 대표적인 stack을 활용해서 풀이하는 문제이다.(는 stack에 저장해두고 )를 만나면 stack이 비어있지 않은 경우(=stack에 (가 존재하는 경우) pop() 해주면된다.그렇게해서 최종 stack이 비어있으면 올바른 괄호이고, stack이 비어있

괄호 검사 문제인데 종류가 2개이다.괄호가 아니라면 무시하고, 괄호인 경우에 대해서만 처리해주면된다.조건문을 치밀하게 설계하지않아서 빈틈이 생겼고, 거기서 오류가 발생했다. 그냥 단순하게위와 같이 모든 경우의 수에 대해 (마치 switch문 처럼) 조건문을 작성하는 방

이 문제는 3가지 단계로 풀면된다(1) 벽을 3개 세우기(2) DFS 나 BFS로 바이러스 퍼뜨리기(3) 안전영역 카운트하기N,M이 모두 최대 8이다. 그렇기때문에 최악의 경우, 공간은 최대 64개이다.64C3으로 조합을 통해 벽을 세우면 -> 21504번 반복(이때

DFS를 이용해 테두리를 제거하는 문제이다.(1) 가장 바깥쪽은 전부 치즈가 존재할 수 없는 영역이라는 조건은 왜 주어졌을까 ?이 문제에서 특이한점은 가장 바깥쪽은 전부 치즈가 존재할 수 없는 영역이라는 것이다.왜 이런 조건을 주었을까? 이 조건 덕분에 우리는 어디서

Tree에서 특정 노드를 삭제했을때 리프 노드의 개수를 구하는 문제이다.DFS를 통해 트리 순회가 가능하므로, 루트 노드에서부터 시작해서 트리를 순회한며, 삭제하는 노드를 만나면 인접 리스트 순회 과정에서 continue로 무시해주면 된다.이게 기본적인 컨셉이고,,구

#인증 [날짜] 2026-03-19 이름: 정재윤 문제: https://www.acmicpc.net/problem/17298 제출번호: 104074619 문제 및 풀이 요약: 오른쪽에 위치한 수 중 처음으로 만나는 큰 수를 출력해야한다. 각 수마다 대응되는 오큰수

완전탐색으로(프루닝 없이도 시간 통과 가능) 최소 치킨 거리를 찾는 문제이다. 도시에 있는 치킨집 중에서 최대 M개 고르라는데, 당연히 M-1개보다는 M개를 골랐을때 치킨 거리가 더 적은 경우의수가 존재한다. 따라서 치킨집은 M개를 골라야한다. 모든 문제는 처음에 완