프로그래머스 vs 백준 뭐부터 풀어야할까 js

Duboo·2021년 11월 25일
0
post-thumbnail

많은 알고리즘 사이트들이 있지만 가장 많이 사용하는 프로그래머스와 백준 소개한다.


친절한 프로그래머스와 그렇지 못한 백준

무슨 의미인지는 양쪽에서 알고리즘을 풀어본 사람이라면 바로 알 수 있다.

프로그래머스 문제 설명

아래는 기능개발이라는 프로그래머스의 문제 설명이다.

기능개발

문제 설명
프로그래머스 팀에서는 기능 개선 작업을 수행 중.....생략

또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는...생략

먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질...생략

제한 사항

  • 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
  • 작업 진도는 100 미만의 자연수입니다.
  • 작업 속도는 100 이하의 자연수입니다.
  • 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다.
    • 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.

백준 문제 설명

아래는 10250번 백준의 문제 설명이다.

문제
ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다...생략

문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리...생략

방 번호는 YXX 나 YYXX 형태인데 여기서 Y 나 YY 는 층 수를 나타내고...생략

  • 프로그램은 표준 입력에서 입력 데이터를 받는다.
  • 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다.
  • 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수를 포함하고 있으며 각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님인지를 나타낸다(1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W).

둘 다 문제 설명이 매우 잘 되어있고 문제가 이해되지 않는다면 많은 유저들에게 질문을 하고 답변을 받을 수 있다.


입출력

문제는 입출력에 있다.

프로그래머스 입출력

입출력 설명 또한 이해하기 쉽다. 마찬가지로 이해가 안된다면 질문을 통해 답변을 받을 수 있고 입력(테스트 케이스) 또한 본인이 직접 추가해서 문제를 풀어볼 수 있다.

함수의 파라미터를 콘솔로 찍어보면 위처럼 케이스 별로 친절하게 입력을 주기 때문에 알고리즘 문제를 푸는것에만 집중하면 된다.


백준 입출력

반면 백준의 경우 입출력의 설명은 프로그래머스와 마찬가지로 친절하지만 입력은 친절하지 않다. 말 그대로 알고리즘 문제와 입력 그리고 출력의 예제만 주고 아무것도 주지 않는다. 문제를 풀어볼 수 있는 곳도 따로 없기 때문에 보통 vscode에서 문제를 풀어보고 제출한다. 물론 프로그래머스와 마찬가지로 많은 유저들에게 질문할 수 있는 공간은 있다.


입력값의 형식은 문제마다 다르기 때문에 문제를 풀기 위해서는 입력을 어떻게 받을지부터 생각하고 실제 입력을 받기까지 완료하고 나서야 문제를 풀 수 있다.


장단점

프로그래머스는 접근성이 좋고 알고리즘 문제에만 집중할 수 있는 장점이 있지만 그렇다고 백준의 문제들이 단점이라는 것은 아니다. 오히려 장점에 속한다고 생각한다.

백준의 경우 입력값을 받기부터가 문제의 시작이기 때문에 첫 시작이 불친절할 수 있다. 하지만 백준의 문제들을 풀다보면 "어떻게 하면 내가 사용하기 쉽게 입력값을 받아올까?"를 먼저 생각하게 된다.

핵심은 이거다 "어떻게 하면 내가 사용하기 쉽게 입력값을 받아올까?"는 알고리즘 문제를 푸는데 정말 많은 도움이 된다.


결론

사실 이미 알고리즘을 공부하고 있는 사람들은 프로그래머스와 백준 둘 다 풀고 있기 때문에 의미 없는 내용이지만 처음 무엇을 먼저 시작할지 고민이 되는 사람에게는 백준을 추천한다는 내용이다.

프로그래머스가 백준보다 문제가 어렵다거나 혹은 그 반대의 의미는 아니지만 백준의 경우 난이도 별로 정말 많은 문제가 있기 때문에 첫 시작은 어렵지만 시작을 백준으로 한다면 알고리즘 공부하는데 큰 도움이 될거라 생각한다.

profile
둡둡

0개의 댓글