GithubHelp home page GithubHelp logo

ps_study's Introduction

PS_Study

기간 주제 진행도
8월 6일 ~ 8월 13일 0x00 ~ 0x08 -

문제집 설명

일부 단원을 제외하면 각 단원에 대응되는 문제집이 있습니다. 설령 이론을 잘 이해했더라도 문제를 풀어내지 못한다면 아무런 의미가 없기 때문에 반드시 문제를 많이 풀어보셔야 합니다.

문제집의 문제는

  • 연습 문제 : 강의 내에서 같이 풀어본 문제

  • 기본 문제 : 특별한 응용 없이 강의에서 다룬 내용을 바탕으로 해결할 수 있는 문제

  • 응용 문제 : 약간의 응용이 필요해서 난이도가 있는 문제

로 분류됩니다. 기본 문제, 응용 문제 중에서 특히 풀어보길 권장하는 문제는 으로 표시를 해두었습니다.

먼저 강의 내에 있는 제 코드를 참고하지 않고 연습 문제를 풀어봅니다. 그 후에 기본 문제✔까지는 풀어보시는걸 강력하게 권장합니다. 기본 문제✔를 풀 때 아예 풀이를 모르겠다면 아직 학습이 부족한 상태이니 강의를 다시 확인하실 필요가 있습니다.

기본 문제✔를 풀 때 풀이는 떠올릴 수 있지만 구현에서 문제가 생기는 경우라면 정답 코드를 참고해서 구현법을 익힌 후 다른 기본 문제를 풀이 참고 없이 풀면서 구현력을 기르시는걸 추천드립니다.

기본 문제✔를 풀 때 큰 어려움이 없다면 응용 문제✔도 확인해서 문제 해결 능력을 길러보시는걸 추천드립니다. 응용 문제✔ 분류의 문제들은 다소 발상이 어렵거나 새로운 테크닉을 필요로 할 수 있기 때문에 30분-1시간 정도 고민한 후에도 풀이를 모르겠다면 정답 코드나 풀이를 확인해도 괜찮습니다. 그러나 풀이만 확인하고 끝내는 것이 아니고 반드시 풀이를 바탕으로 혼자 힘으로 구현해보는 것을 추천드립니다.

응용 문제✔를 모두 해결했다면 우선 다음 단원으로 넘어가고, 나중에 완강을 한 후 남은 응용 문제를 풀이 참고 없이 도전해보는걸 추천드립니다.

정리하자면 문제집에서 연습 문제, 기본 문제✔, 응용 문제✔ 까지 풀고 다음 단원으로 넘어가는걸 추천드립니다. 응용 문제✔는 풀이를 참고해도 괜찮지만 연습 문제, 기본 문제✔는 강의의 내용을 잘 이해했다면 풀이를 참고하지 않고 구현할 수 있기 때문에 혼자 힘으로 풀어보길 권장합니다. 만약 응용 문제✔를 푸는데에 어려움이 있다면 응용 문제✔ 대신 기본 문제를 더 풀고 다음 단원으로 넘어가도 괜찮습니다.

문제집

번호 주제 진행도
0x00 오리엔테이션 (문제집 X)
0x01 기초 코드 작성 요령 I (문제집 X)
0x02 기초 코드 작성 요령 II 100%
0x03 배열 100%
0x04 연결 리스트 100%
0x05 스택 100%
0x06 100%
0x07 100%
0x08 스택의 활용(수식의 괄호 쌍) 100%
0x09 BFS 100%
0x0A DFS (문제집 X)
0x0B 재귀 100%
0x0C 백트래킹 100%
0x0D 시뮬레이션 100%
0x0E 정렬 I 100%
0x0F 정렬 II 100%
0x10 다이나믹 프로그래밍 100%
0x11 그리디 100%
0x12 수학 100%
0x13 이분탐색 100%
0x14 투 포인터 100%
0x15 해시 100%
0x16 이진 검색 트리 100%
0x17 우선순위 큐 100%
0x18 그래프 100%
0x19 트리 100%
0x1A 위상 정렬 100%
0x1B 최소 신장 트리 100%
0x1C 플로이드 알고리즘 100%
0x1D 다익스트라 알고리즘 100%
0x1E KMP 100%
0x1F 트라이 100%
Appendix A 문자열 기초 100%

ps_study's People

Contributors

bdlhj avatar jack-chagarr avatar unknownburphy avatar daeguhighman avatar minhouu avatar wifihan avatar

Watchers

 avatar

ps_study's Issues

[Gold IV] 빙산 - 2573 | 다들 어떤 방식으로 풀었나요??

[Gold IV] 빙산 - 2573

문제 링크

성능 요약

메모리: 209784 KB, 시간: 744 ms

분류

너비 우선 탐색, 깊이 우선 탐색, 그래프 이론, 그래프 탐색, 구현

문제 설명

지구 온난화로 인하여 북극의 빙산이 녹고 있다. 빙산을 그림 1과 같이 2차원 배열에 표시한다고 하자. 빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다. 빙산 이외의 바다에 해당되는 칸에는 0이 저장된다. 그림 1에서 빈칸은 모두 0으로 채워져 있다고 생각한다.

2 4 5 3
3 2 5 2
7 6 2 4

그림 1. 행의 개수가 5이고 열의 개수가 7인 2차원 배열에 저장된 빙산의 높이 정보

빙산의 높이는 바닷물에 많이 접해있는 부분에서 더 빨리 줄어들기 때문에, 배열에서 빙산의 각 부분에 해당되는 칸에 있는 높이는 일년마다 그 칸에 동서남북 네 방향으로 붙어있는 0이 저장된 칸의 개수만큼 줄어든다. 단, 각 칸에 저장된 높이는 0보다 더 줄어들지 않는다. 바닷물은 호수처럼 빙산에 둘러싸여 있을 수도 있다. 따라서 그림 1의 빙산은 일년후에 그림 2와 같이 변형된다.

그림 3은 그림 1의 빙산이 2년 후에 변한 모습을 보여준다. 2차원 배열에서 동서남북 방향으로 붙어있는 칸들은 서로 연결되어 있다고 말한다. 따라서 그림 2의 빙산은 한 덩어리이지만, 그림 3의 빙산은 세 덩어리로 분리되어 있다.

2 4 1
1 1 5
5 4 1 2

그림 2

3
4
3 2

그림 3

한 덩어리의 빙산이 주어질 때, 이 빙산이 두 덩어리 이상으로 분리되는 최초의 시간(년)을 구하는 프로그램을 작성하시오. 그림 1의 빙산에 대해서는 2가 답이다. 만일 전부 다 녹을 때까지 두 덩어리 이상으로 분리되지 않으면 프로그램은 0을 출력한다.

입력

첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 나타내는 M개의 정수가 한 개의 빈 칸을 사이에 두고 주어진다. 각 칸에 들어가는 값은 0 이상 10 이하이다. 배열에서 빙산이 차지하는 칸의 개수, 즉, 1 이상의 정수가 들어가는 칸의 개수는 10,000 개 이하이다. 배열의 첫 번째 행과 열, 마지막 행과 열에는 항상 0으로 채워진다.

출력

첫 줄에 빙산이 분리되는 최초의 시간(년)을 출력한다. 만일 빙산이 다 녹을 때까지 분리되지 않으면 0을 출력한다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.