1. 문제 https://www.acmicpc.net/problem/14467 2. 풀이과정구조체를 활용해서 풀이했다.cow 구조체에 name, location을 활용하여 소 번호마다 위치를 저장할 수 있는 자료구조를 사용했다.새로운 소라면 그냥 저장기존에 있는 소이면서 소의 위치가 바뀌었다면 바뀐 위치로 갱신기존에 있는 소이지만 위치가 바뀌지 않았다면 패스 3. C++ 정답코드#include #include using namespace std;struct cow{ int name; int location;};int main() { vector v; int n; cin >> n; int cnt = 0; while (n--) { int cowNum,..
1. 문제https://www.acmicpc.net/problem/14467 2. 풀이과정-1로 초기화되어 있는 크기 10 배열에 소의 번호를 인덱스로 하여 소의 위치를 저장한다.-1이면 새로운 소이므로 추가0, 1이면 새로 위치한 소이므로 새로운 위치로 갱신 후 count 1 증가 3. Javascript 코드const fs = require('fs');const filepath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';const input = fs.readFileSync(filepath).toString().trim().split('\n');const n = input[0];const arr= input.slice(1).map(l..
1. 문제 https://www.acmicpc.net/problem/1715 2. 풀이과정카드 묶음을 합쳐가면서 비교를 수행하는데 최소의 비교로 합친다면 최소 몇번의 비교가 필요한지 묻는 문제 즉, 우리는 "현재 존재하는 카드 묶음 중에서, 가장 적은 2개의 묶음을 우선적으로 계산" 하는 것이 정답이라는 것을 파악했습니다. ex) 5 4 3 2 1 카드 묶음이 이렇게 구성되어 있다면 (1+2) + (3+3) + (6+4 )+ (10+5) 이전 카드 묶음의 비교횟수가 다음 카드 비교횟수에 영향을 주기 때문에 가장 적은 카드 묶음을 계속 합쳐야합니다!!✏ 알고리즘N개의 카드 묶음에서 가장 작은 두 개를 골라 합친다 -> 합친 두 카드를 카드 묶음에 넣는다 -> 반복 N개의 카드 묶음에서 최소값 2개를 꺼내기..
1. 문제https://www.acmicpc.net/problem/6198 2. 풀이과정1. 먼저 스택이 비어있는 상태니까 첫번째 빌딩의 높이를 스택에 넣는다. 2. 두번째 입력부터 아래 로직을 거친다.스택에 들어있는 빌딩 높이들 중에 입력받은 빌딩의 높이보다 낮은 빌딩은 다 뺍니다.낮은 빌딩을 다 뺐다면 스택에는 입렵받은 빌딩보다 높거나 아니면 모두 다 빠져서 비어있을 겁니다.이때 스택의 남은 빌딩 수가 곧 입력받은 빌딩을 볼 수 있는 빌딩이므로 count에 저장합니다.3. 위 3단계가 끝나면 스택에 입력받은 빌딩을 스택에 넣어줍니다 예시1. 첫번째 입력건물5개이고 높이 {10, 5, 1 ,3 ,14}가 순차적으로 입력됩니다.현재 스택이 비어있으니 현재 입력 push 합니다. Stack [ 10 ] 2..
1. 문제https://www.acmicpc.net/problem/24511 2. 문제 이해이 문제를 처음 읽으면 "이게 뭐야"라는 말이 절로 나온다.문제 이해만 한다면 정말 쉬운 문제이니 문제 이해부터 진행해 보겠다. 앞부분 입력 각 자료구조(0 : queue, 1 : stack)에 값을 하나씩 넣어두는 과정이라고 생각하면 된다.이렇게 개별적인 큐와 스택을 모아둔 전체를 이 문제에서는 queuestack이라고 한다. 뒷부분 입력 위에서 만든 queuestack에 첫 부분(스택 or 큐)에 push 시킬 값을 입력받는다.queuestack에 push를 시키고 pop을 바로 시킨다.스택이면 push 한 값이 바로 pop큐라면 기존에 들어있던 값이 pop이렇게 pop 된 값이 다음 부분(스택 or 큐)에 p..
1. 문제 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 2. 풀이과정 키보드 입력, 삭제, 커서의 동작을 코드로 표현하는 문제 커서의 움직임으로 중간의 데이터를 자주 삽입, 삭제를 하므로 list(양방향 연결리스트) 사용 1. 문자열을 입력받고 구성하는 한 문자씩 양방향 연결리스트에 삽입 2. cursor = li.end(); 로 커서(iterator)의 시작점을 두었다. li.end()는 현재 연결리스트의 마지막 요소의 다음위치를 가르킵니다..