본문 바로가기

Algorithm/BaekJoon

(18)
[2607] 비슷한 단어 보호되어 있는 글입니다.
[2343] 기타 레슨 보호되어 있는 글입니다.
[3190] 뱀 구분 덱 / 큐 구현 시뮬레이션 자료구조 문제 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 풀이 일단 신경써야 할 부분은 뱀의 이동 방향 전환 일단 뱀이 이동할 판을 2차원 배열로 구성한다. 사과 (2) 벽 (1) 자신의 몸(1) 나머지부분(0) 과 같이 구성하는데, 벽과 자신의 몸은 닿으면 죽는 것이 동일하므로, 같은 변수로 넣어준다. 뱀의 이동 덱을 이용하여, 머리의 이동은 다음칸을 push_front, 꼬리의 이동은 꼬리칸을 pop_back으..
[2529] 부등호 구분 백트래킹 문제 https://www.acmicpc.net/problem/2529 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력 www.acmicpc.net 풀이1 먼저 간단하게, 답 배열에 첫번째 자리 수를 집어 넣어놓고 백트래킹을 진행한다. 진행하고, 최댓값 최솟값 String을 갱신하는 방법이다. 코드(8ms) // // 부등호 // #include #include using namespace std; const int SIZE = 10; long long min_cost = 999999999999; long long max..
[20055] 컨베이어 벨트 위의 로봇 분류 구현 시뮬레이션 문제 https://www.acmicpc.net/problem/20055 풀이 저 1,2,3,4번을 순서대로 하기만하면된다. 근데, 특히 회전을 직접 한칸씩 옮겨서 구현하는 것은 매우 비효율적(코드1번)이기 때문에 포인터를 사용(코드2번)해야한다. (코드 1번) ( 회전을 인덱스로 구현하는 것 까지는 알겠는데, 로봇배열이랑 내구성배열을 따로따로하려니 헷갈림 ) 포인트는 1. 구조체로 해당 인덱스에 로봇의 여부 / 내구성을 저장하게 구현하는 것이고, 2. 인덱스 포인터를 사용하기 배열을 이동시키나, 포인터만 앞으로(--pos) 이동시키나 같다. (이때 회전벨트이므로, 원형 큐처럼 구현해야한다. 하지만 원형 큐는 pos++였던 점에서 코드가 약간 다름) 3. STEP2 : 가장 먼저 벨..
[20302] 민트초코 🙃 : 대충 다시 시도해야한다는 뜻 분류 수학 정수론 소수 판정 에라토스테네스의 체 문제 풀이 입력으로 받은 수의 절댓값을 전부 소인수 분해하여, * 이면, 소인수 분해되는 소인수의 지수를 +1 / 이면, 소인수 분해되는 소인수의 지수를 -1 지수가 음수인 소인수가 하나라도 존재하면 유리수 주의) 0이 곱해지는 순간 바로 정수 부호는 상관 없음 코드 // // 민트 초코 // /* * 입력으로 받은 수의 절댓값을 전부 소인수 분해하여, * 이면, 소인수 분해되는 소인수의 지수를 +1 / 이면, 소인수 분해되는 소인수의 지수를 -1 * 지수가 음수인 소인수가 하나라도 존재하면 유리수 * * */ #include #include using namespace std; const int SIZE = 100000..
[2841] 외계인의 기타 연주 구분 자료구조 스택 문제 https://www.acmicpc.net/problem/2841 2841번: 외계인의 기타 연주 첫째 줄에 멜로디에 포함되어 있는 음의 수 N과 한 줄에 있는 프렛의 수 P가 주어진다. (N ≤ 500,000, 2 ≤ P ≤ 300,000) 다음 N개 줄에는 멜로디의 한 음을 나타내는 두 정수가 주어진다. 첫 번째 정수 www.acmicpc.net 풀이 1. 서로 다른 줄 끼리는 영향이 가지 않는다 -> 각 line별 fret을 스택으로 나누어 분리한다. 2. 기타는 줄이 6번 까지 존재 -> vector guitar(7) ; // 0번라인은 쓰지않음 now : 지금 연주하려는 음 stack : 해당 라인 스택에 존재하는 프랫 now == stack : 아무것도 안함 now >..
[2493] 탑 분류 스택 문제 풀이 자신과 가까운 것부터 순차적으로 비교해봐야하므로 스택이 필요함을 알 수 있다. 모든 타워에 대해 조사해보아야 하므로 타워의 갯수 n개만큼 반복문을 돌아야 한다. 방법에는 2가지가 있는데, for문에서 i=0부터 n까지 앞부터 실행하는 것과, i=n부터 0까지 뒤에서부터 실행하는 방법이 있다. 앞부터 실행하는 방법은, 이미 어떤 타워가 자신의 신호를 송신할지 결정된 타워들을 스택에 넣어두고, 결정을 해야하는 타워와 스택을 하나씩 비교해서, 현재 타워보다 높이가 낮으면 pop해간다. 1 ) 스택이 비어버리면, 자신 이전에 자신보다 큰 타워가 없어서 아무도 자신의 신호를 송신하지 못하므로 0이다 2 ) 자신보다 높은 타워가 발견되면, (스택을 이용해 가까운 순서대로 검사했으므로) 해당 타..

728x90