콘솔창 & 윈도우창/코딩 테스트 24

[백준 골드5] 버블 소트

swap된 거리가 가장 길었던 것에 +1을 하면 된다.여기서 버블 정렬의 이중 for문에서 안쪽 for문이 돌 때swap이 일어나지 않은 반복문이 한 번 더 실행되는 것을 감안해 최댓값에 1을 더한다.  #include #include #include #include #include #include #include #include #include using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0); int n, max = 0; cin >> n; vector>v(n); for (int i = 0; i > v[i].first; v[i].second = i; } sort(v.be..

[실버3] 삼삼한 수 2

3의 0제곱도 포함하는 것이니, n%3의 값이 1이 될 수 있다.또한 음의 수는 포함하지 않으나, "작거나" 같은 수라 했다.작거나는 0의 예외처리를 뜻하는 것이다.0의 경우 예외처리가 바로 생각나지 않아서 4번 틀렸다.  #include #include #include #include #include #include #include #include using namespace std;bool IsSumOfPowers(long long int n);int main(){ ios::sync_with_stdio(0); cin.tie(0); long long int n; cin >> n; if (n == 0) { printf("NO"); return 0; ..

[백준 실버1] 11286 절대값 힙

중요한 조건은 드래그한 저 줄이다. 배열에 입출력에 대한 조건이 있다.1. 입력할 때 0이 아닐 때,2. 출력할 때 0일 때, 하지만 출력에 조건이 있다.1. 절대값이 가장 작을 것2. 절대값이 가장 작은 수가 중복될 경우 가장 작은수 출력(= 음수 출력) 출력에 대한 조건에 우선 순위에 대한 명확한 기준이 있다.이는 우선 순위 큐로 구현하기 적합함을 알 수 있다.  #include #include #include #include #include #include #include #include using namespace std;struct compare { bool operator()(int a, int b) { if (abs(a) == abs(b)) { retur..

[백준 실버4] 2164 카드2

밑에 큐라고 써있는 만큼 선입선출(FIFO)의 구조를 가질 수 있는 구현 방법이다.차례대로 넣고 빼는 순서는 가장 먼저 넣은 것을 빼고 (= 큐에 있는 것을 뺀다)그 바로 뒤에 있던 카드를 뒤에 넣는다(= 큐에 새로 추가한다).다시 그리고 세 번째에 있던 카드를 뺀다.( = 큐에 있는 것을 뺀다)라는 과정의 반복이다. 카드가 단 1장 남을 때 까지면 Queue의 사이즈가 1일때 까지가 반복문의 조건된다.#include #include #include #include #include #include #include #include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(N..

프로그래머스 LV.1 햄버거 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   int solution(vector ingredient) { int answer = 0, startIdx = 0; vector varr = {0}; for (int x : ingredient) { if (varr.back() == 1 && x == 2) { varr.back() = 12; } else if (varr.ba..

[백준 골드4] 17298 오큰수

https://www.acmicpc.net/problem/17298  오큰수는현재 수보다 크면서 오른쪽에 있는 수만 구하면 된다. 생각은 간단한데 스택을 시간 초과 안뜨고 풀 수 있다. -1로 초기화 해놓고 쓰면 예외처리를 따로 해주지 않아도 된다.스택을 이용해서 인덱스를 담아두고 꺼내쓰는 식으로 값을 비교하고,비교한 값이 크다면 정답이 되는 ans 배열에 넣어주면 된다. 그럼 오른쪽에 위치하며 자신보다 큰 값이 없던 친구들은 자동으로 -1이 되고,그렇지 않은 값들은 가까우면서 큰 수를 구할 수 있다.https://www.acmicpc.net/problem/17298#include #include #include #include #include #include using namespace std;int ..

[백준 실버2] 1874 스택 수열

https://www.acmicpc.net/problem/1874 pop한 걸로 주어진 예제의 수열을 만들 수 있느냐가 관건이다. 1. 현재 수열 값 >= 자연수현재 수열 값이 자연수보다 크거나 같을 때까지 자연수를 1씩 증가시키며자연수를 스택에 push한다.그리고 push가 끝나면 수열을 출력하기 위해 마지막 1회만 pop한다. 2. 현재 수열 값 혀재 수열의 값보다 자연스가 크다면 pop으로 스택에 있는 값을 꺼낸다.꺼낸 값이 현재 수열 값이거나 아닐 수도 있다.만약 아니라면 후입선출 원리에 따라 수열을 표현할 수 없으므로 no를 출력한 후 문제를 종료하고,현재 수열 값이라면 그대로 조건문을 빠져나온다. #include #include #include #include #include #include ..

프로그래머스 LV.1 명예의 전당

https://school.programmers.co.kr/learn/courses/30/lessons/138477?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   result는 결국 k번째까지는 순차적으로 들어온 수 중에 가장 작은 수를 구하는 것이고,그 이후부터는 score에서 k번째 까지 큰 수중에 가장 작은 수를 구하면 된다.   #include #include #include using namespace std;vector solution(int k, vector score) { vector answer; vect..

[백준 실버5] 수들의 합5 2018

https://www.acmicpc.net/problem/2018   투포인터 쓰기처음에 무지성 포문 생각했는데조금 생각해보니 포문으론 안되는 걸 알았다.  #include #include #include #include #include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, count = 1, startIdx = 1, endIdx = 1, sum = 1; cin >> n; while (endIdx != n) { if (sum == n) { count++; endId..