목록분류 전체보기 (73)

최단 거리를 구하는 문제는 높은 확률로 BFS를 사용하면 된다. 위 그래프에서 1번 도시가 시작점이라고 가정하면, 0계층은 도시1, 1계층은 도시 2,3, 2계층은 도시 4인 트리로 볼 수 있다. 최단거리가 지정되어있으므로, 우리는 K-1 계층의 마을들을 찾으면 된다. 도로가 단방향으로 설정되어있기 때문에 그래프를 표현할때 행렬을 사용하는 것보다 인접 리스트, 즉 벡터를 사용하면 편하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #incl..

괄호 문제를 풀었다면 바로 스택을 사용하는 문제라는걸 알 수 있다. 어떤 것을 감싸고 있는 집합을 찾아야 하는 경우 스택이 가장 유용하다. 이 문제도 A쌍이 (), B 쌍이 [] 라고 생각하면 편하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 #include #include #include #include #include #include #include #include using namespace std; int main(){ int T; int ans = 0; cin>>T; for(int t = 0; t>tem; s.push(..

처음엔 str replace로 하는건줄 알고 하다가... 시간 초과가 나서 스택을 사용하게 된 문제다. 스택을 사용하게 되면 직관적으로 바로 보이지만...! 예외를 항상 잘 생각해야 한다. 기본적인 원리는 PPPAPAP 를 스택에 순서대로 넣고, A가 들어올때 스택에 이미 P가 두개 들어있고, 이후에 P가 들어오게 되면 앞의 2개의 P를 pop해주면 얼추 그림이 보인다. A 이후에 들어오는 P를 신경을 써줘야 하는데, 이부분을 놓쳐 계속 틀렸다. 나는 두개의 플래그를 사용해서 PPAP 단어가 옳바른지 판단하였고, 마지막에 스택에 P가 하나 들어있는 경우 PPAP 단어라고 판단 하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2..

1 2 3 -- 코드를 입력하세요 SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL; cs

123-- 코드를 입력하세요SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INSORDER BY NAME , DATETIME DESC;cs

1234-- 코드를 입력하세요SELECT ANIMAL_ID, NAME FROM ANIMAL_INSWHERE INTAKE_CONDITION = 'SICK'ORDER BY ANIMAL_ID;cs

문제를 읽었을때 우선순위를 사용하므로 큐를 사용해야 한다. 인쇄 작업 방식을 그대로 구현하되, 내가 인쇄를 요청한 문서가 어디에 있는지, 몇번째에 프린트 되는지, 가장 높은 우선순위를 가졌는지 판단해야 한다. loacation 변수를 계속 변화하게 될 경우 구현이 복잡해 질 것 같아 pair를 사용해서 내가 인쇄 요청한 작업을 표시했고, 따로 함수를 만들어 내 작업이 가장 높은 우선순위를 가졌는지 판단했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #include #include #in..

프로그래머스에서 푼 첫번째 알고리즘 문제! 예시를 읽어보면 더욱 쉽게 문제를 이해 할 수 있다. 각 기능이 앞으로 몇일이 더 소요될지를 먼저 큐에 저장한다. 다음과 같이 주어질 경우, 큐에 7,3,9 순서대로 집어 넣는다. ------- 9 3 7 ------- 맨 앞의 값을 history에 저장한 후, 뒤의 값과 비교하면서 기능의 갯수를 카운트 하면 된다. 7을 pop 한후 history에 저장한다. 이후 q.front()는 3인데, history와 비교했을때, 값이 작으므로 7일 후에 두번째 기능이 발매 될 수 있다. 이런 경우 count++을 하고, history는 7로 유지! pop()을 한 후, 다음 q.front()는 9인데, 이 기능은 7일 이후에 완료 된다는 의미 이므로 일단 지금까지 co..