티스토리 방명록

댓글쓰기 폼
  • 프로필사진 비밀댓글입니다 2017.07.26 15:17
  • 프로필사진 전명우 성의없어 보일 수도 있는 답변이지만, 실력에 맞는 난이도의 문제를 많이 푸는 것이 좋습니다. 다다익선이에요. 2017.07.26 20:00 신고
  • 프로필사진 비밀댓글입니다 2015.09.06 11:47
  • 프로필사진 비밀댓글입니다 2014.11.19 07:48
  • 프로필사진 전명우 기본적으로 해법에 적은 Dynamic Programming과 큰 차이가 없습니다.
    여러 가지 방법이 가능한데, 해법에 적은 DP 정의에서 구간 i와 구간 j가 겹치는 조건을 빼고 진행하면 O(N^2) 시간복잡도를 갖습니다.
    2014.11.24 15:50 신고
  • 프로필사진 비밀댓글입니다 2014.07.18 22:29
  • 프로필사진 전명우 안녕하세요.

    저는 초등학교 5학년 때 부터 C++ 언어로 초/중/고등학생 대회인 정보올림피아드 공부를 시작했습니다.

    워낙 어렸을 때 부터 시작한 공부라 많이 더디게 진행되었습니다. 우선, 제일 먼저 준비하셔야할 것은 본인이 생각한 풀이를 코드로 보다 빠르게 보다 정확도 있고 보다 완벽하게 표현할 수 있어야합니다. 이에 관련된 연습은 오랜 시간동안 많은 문제를 풀고 많은 코드를 작성하면서 서서히 하는 방법 밖에는 없는 것 같습니다.

    그리고 문제 풀이를 생각하는 단계에 접어들기 위해, 기초적인 자료구조와 알고리즘을 이용한 문제들을 꽤 많이 풀으셔야 합니다. 정렬부터 시작해서 Stack, Queue, DFS, BFS, Dijkstra Algorithm, Kruskal Algorithm 등등 많습니다. 이러한 기본적인 알고리즘을 코딩하는데 지장이 없어야하며, 유동적이게 응용도 할 수 있어야합니다.

    코딩, 자료구조, 알고리즘에 대해서 어느 정도 이해하고 응용할 수 있는 단계가 되면 본격적으로 PS(Problem Solving)가 시작한다고 생각합니다. 문제들을 보고 풀고 정 모르겠으면 풀이를 찾아보고, 이해하고 자기 것으로 만들어야합니다.

    수학이 중요한 것 같다고 말씀하셨는데, 그 전에 중요한 것은 앞서 말씀드렸다시피 코딩, 자료구조, 알고리즘 입니다. 수학은 마지막 단계에서 문제를 풀며 조금씩 배워나가는게 더 낫습니다. 반대되는 말이지만, 수학을 잘하는 사람들이 진행 속도가 빠르긴 하더군요. 수학을 PS라 생각하지 않고 병행해도 될 것 같습니다. 도움이 되었으면 좋겠네요. ^^
    2014.07.22 00:21 신고
  • 프로필사진 전명우 제일 중요한 내용이 빠졌네요. 제가 저 단계 별로 공부를 진행한 것은 지금은 별로 없는 사설 학원에서였습니다. 다행히 제가 공부할 때에 비해 인터넷에 '한글'로 된 좋은 문제들이 많이 있습니다.

    http://acmicpc.net 사이트는 문제들이 단계별로 나눠져 있진 않아서, 처음 시작하기에 좋은 곳은 아니라 생각합니다. http://dovelet.com 이나 http://jungol.co.kr 에서 기초를 다지기 좋을 것 같습니다.
    2014.07.22 00:23 신고
  • 프로필사진 김영두 안녕하세요

    http://www.acmicpc.net/problem/status/1055#

    이문제 푸셨더라고요.

    혹시 해법좀 제시받을 수 있을까요?

    2013.12.13 11:06 신고
  • 프로필사진 전명우 한 동안 블로그 활동을 쉬고 있었습니다. 답변이 늦어 죄송합니다.

    우선 말로는 힌트처럼만 알려드리겠습니다.
    출력해야되는 문자열의 길이는 100보다 같거나 작습니다. 따라서 각 위치에 해당하는 알파벳을 적당한 시간내에 구하면 문제는 해결됩니다.
    해당 문제에서 각 step별로 문자열의 길이를 쉽게 알 수 있습니다. 그 길이를 이용해서 x번째에 들어가는 문자가 어떤 것인지 구할 수 있습니다.

    제 코드를 첨부합니다. 악용되는 일이 없길 바라겠습니다.
    http://ideone.com/KHNznY
    2014.07.22 00:09 신고