본문 바로가기
알고리즘

백준으로 알고리즘 공부를 시작해보자!

by 코딩하는 여우 2024. 4. 26.

 

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

(백준 온라인 저지 사이트)

 

다른 사이트도 많은데 왜 백준이냐면요..?

- 대부분(흔히 쓰는)의 프로그래밍 언어를 지원한다.

- 자료가 많아서 공부하기 쉽고, 모르는 문제를 검색하기도 쉽다.

- solved.ac라는 사이트에 연동해서 게임하듯이 풀 수 있다.

 

백준에 처음 들어갔을 때는 어떤 문제를 풀어야 하고 어떻게 공부해야 할지를 정하기 어려운데

solved.ac가 이 단점을 보완해주고 동기부여에 큰 도움이 되어서 필수로 연동하는 것이 좋아요!

 

1. 우선 문제를 하나 풀어보자(백준 1000번)

https://www.acmicpc.net/problem/1000

 

백준의 가장 첫 문제로

입력으로 A와 B가 주어지고 A+B를 구하는 단순한 문제입니다.

 

이처럼 백준에는 해당 문제처럼 입력이 주어지고, 그 입력을 본문에 맞게 잘 가공해 출력하는 식의 문제가 대부분입니다.

여러분들이 원하는 언어를 사용해서 한번 풀어보세요!

 

//c++
#include <iostream>
using namespace std;

int main()
{
    int A,B;
    cin >> A >> B;
    
    int result = A+B;
    cout << result << endl;
    return 0;
}
#python
A,B = map(int, input().split())
result = A+B
print(result)

 

다음과 같이 코드를 작성하셨으면 제출 탭으로 가서 제출해 주세요.

언어를 맞게 설정하고 제출을 누르면

 

이런 결과창을 볼 수 있습니다.

 

백준은 예제를 포함해 추가적인 여러 테스트 입력들로 채점을 합니다.

흔히 볼 수 있는 결과로는 6가지가 있습니다.

 

맞았습니다!! - 말 그대로 맞았다는 의미, 모든 테스트 입력에서 올바른 출력을 냄;

틀렸습니다 - 어떤 테스트에서 정답과 다른 출력을 냄

런타임 에러 - 프로그램 돌아가던 중 프로그램이 에러를 냄

컴파일 에러 - 프로그램을 실행할 수 없음(컴파일을 할 수 없음)

시간 초과 - 프로그램이 설정된 시간제한보다 오랫동안 돌아감

메모리 초과 - 프로그램이 설정된 메모리 제한을 넘는 메모리를 사용함

 

맞은 문제는 '성공'으로 표시되고 다른 분들의 코드를 열람할 수 있습니다.

 

2. solved.ac

이제 solved.ac사이트에 연동해 봅시다.

백준 사이트 우측 상단의 설정을 클릭

solved.ac탭에 들어가 '사용하기' 버튼 클릭

 

보기 탭에 들어가 solved.ac티어에 '보기' 체크

 

 

아까 푼 문제를 들어갔을 때 다음과 같이 문제 번호 옆에 이미지가 보이면 성공입니다.

 

솔브드(solved.ac)는 6개의 티어 체계가 있어요

 

브론즈 -> 실버 -> 골드 -> 플래티넘 -> 다이아 -> 루비

각각 브론즈5, 브론즈4,...,브론즈1 이렇게 5개의 세부티어로 이루어져 있습니다.

브론즈5가 가장 쉬운 문제, 루비1이 가장 어려운 문제로 티어가 매겨집니다.

 

3. 처음 시작할 때는 어떤 문제를 풀어야하냐?

2가지를 추천합니다.

- solved.ac class

https://solved.ac/class

 

초보자들이 알아야 할 기초 수학, 알고리즘부터 고급 알고리즘까지 배워야 하는 순서대로 모아둔 사이트입니다.

클래스1 문제부터 차근차근 풀어보세요!

 

- 백준 단계별로 풀어보기

https://www.acmicpc.net/step

 

단계별로 풀어보기

36유니온 파인드유니온 파인드(또는 disjoint set, 상호 배타적 집합, ...) 자료구조를 배워 봅시다.4

www.acmicpc.net

 

여기도 클래스와 마찬가지도 초보자들이 배워야 하는 순서대로 필요한 문제만 꾹꾹 눌러 담아둔 곳입니다.

 

 

4. 모르는 문제는 어떻게 하나요?

단계별로 풀다 보면 처음에는 쑥쑥 풀릴 수 있지만 계속하다 보면 막히는 문제가 반드시 생깁니다.

 

이때는 30분이 지나도록 계속 부여잡지 마시고 인터넷 검색을 해보시는 걸 강력히 추천드려요.

 

스스로 생각해 보는 것도 값진 경험이지만 초창기에는 너무나도 비효율적이고 이름이 있는 알고리즘 같은 경우는 스스로 생각해 내기 불가능하다 싶은 것이 많습니다.

 

빠르게 실력을 늘리기 위해서는 한 문제에 너무 집착하지 않고 검색해서 어떤 알고리즘을 쓰는 문제인지 찾아보고, 모르는 알고리즘이라면 검색해서 배우고, 비슷한 문제를 풀어보면서 감각을 익히는 것이 좋다고 생각합니다.

 

풀이를 이해하려 하거나 다른 사람의 코드를 참고하면서 공부하면 더욱 좋아요!