• 가이드
  • 문제 가이드

문제 가이드

공지사항

  • "~해야 합니다", "~안됩니다"는 필수를 의미합니다.
  • "좋습니다"는 권장을 의미하며, 꼭 지키지 않아도 됩니다.

문제 스타일

  • 문제의 문단은 <p>를 사용해야 합니다. <br>을 사용해서 문단을 구분하면 안됩니다.
  • 문제에 빈 줄을 삽입하면 안됩니다. 두 문단 사이에 빈 줄이 있거나, 문제의 마지막 문단 밑에 빈 줄이 있으면 안됩니다.
  • 글자 크기를 변경하면 안됩니다.
  • 특별한 경우가 아니면 문단 정렬을 변경하면 안됩니다.
  • 글꼴을 변경하면 안됩니다.
  • margin, padding등의 속성을 추가하면 안됩니다.
  • ^, _ 대신 <sup>, <sub> 태그를 사용해야 합니다. 에디터에서 , 버튼을 이용해 적용할 수 있습니다.
    • 2^20 → 220
    • a_i → ai
  • 알파벳 l은 구분하기 어려울 수도 있으니, 를 사용하는 것이 좋습니다.
  • 순서 없는 목록은 <ul>, 순서 있는 목록은 <ol>을 이용해야 합니다. 에디터에서 , 버튼을 이용해 적용할 수 있습니다.
  • 변수에 이탤릭체(<em>)를 적용하면, 다른 알파벳과 쉽게 구분할 수 있습니다. 에디터에서 버튼을 이용하면 적용할 수 있습니다.
    • 첫째 줄에 N이 주어진다. → 첫째 줄에 N이 주어진다.
    • 1 ≤ N ≤ 100,000 → 1 ≤ N ≤ 100,000
    • 둘째 줄에 A1, A2, ..., AN이 주어진다. → 둘째 줄에 A1, A2, ..., AN이 주어진다.
  • "" 안에는 <code>태그를 적용하는 것이 좋습니다.
    • 불가능한 경우에는 "Impossible"을 출력한다. → 불가능한 경우에는 "Impossible"을 출력한다.
  • 제한을 괄호 안에 삽입할 때는, 여는 괄호의 다음과 닫는 괄호의 이전에 공백을 삽입하지 않아야 합니다.
    • ( 1 ≤ N ≤ 100 ) → (1 ≤ N ≤ 100)
    • (1 ≤ N ≤ 100 ) → (1 ≤ N ≤ 100)
    • ( 1 ≤ N ≤ 100) → (1 ≤ N ≤ 100)
  • 부등호, 등호와 같은 수학 기호의 앞과 뒤에는 공백을 한 칸 삽입해야 합니다.
    • 1≤N≤100 → 1 ≤ N ≤ 100
  • 그림은 가운데 정렬을 사용하는 것이 좋습니다. 에디터에서 버튼을 이용하면 가운데 정렬이 됩니다.
  • 입력으로 문자가 주어지는 경우에는 <code>을 이용해 나타내는 것이 좋습니다.
    • 입력으로 주어지는 문자열은 A, B, C로만 이루어져 있다.

Mathjax

  • Mathjax는 꼭 필요한 이유가 아니면, 사용하지 않아야 합니다.
  • 변수를 나타내기 위해서 Mathjax를 사용하면 안됩니다.
    • 첫째 줄에 \(N\)이 주어진다. → 첫째 줄에 N이 주어진다.
    • 둘째 줄에 \(A_1, A_2, \dots, A_N\)이 주어진다. → 둘째 줄에 A1, A2, ..., AN이 주어진다.
  • 다음과 같은 경우에 Mathjax를 사용하는 것이 좋습니다.
    • \(x_i = x_{\lfloor i - \sqrt{i} \rfloor} + x_{\lfloor \ln{(i)} \rfloor} + x_{\lfloor i \sin^{2}{(i)} \rfloor}\)
    • \(p(n) = \begin{cases} 0 & \text{if } n = 1 \\ -1 & \text{if } n \text{ is a prime number} \\ O(n) & \text {otherwise} \end{cases}\)
    • \(\varphi (a,b)= ( \sum _{ k=a }^{ b }{ p(k) }  )  - (b-a+1)\)
    • \(\begin{vmatrix} a_{ 11 }x_{ 1 }+a_{ 12 }x_{ 2 }+a_{ 13 }x_{ 3 }=b_{ 1 } \\ a_{ 21 }x_{ 1 }+a_{ 22 }x_{ 2 }+a_{ 23 }x_{ 3 }=b_{ 2 } \\ a_{ 31 }x_{ 1 }+a_{ 32 }x_{ 2 }+a_{ 33 }x_{ 3 }=b_{ 3 } \end{vmatrix}\)
    • \(\frac{5}{4} - \frac{9}{12} = \frac{-4}{-8} = \frac{4}{8} = \frac{1}{2}\)
    • \(D_n = \begin{vmatrix}  \text{gcd}\left(x_1,x_1\right) & \text{gcd}\left(x_1,x_2\right) & \text{gcd}\left(x_1,x_3\right) & \dots & \text{gcd}\left(x_1,x_n\right) \\ \text{gcd}\left(x_2,x_1\right) & \text{gcd}\left(x_2,x_2\right) & \text{gcd}\left(x_2,x_3\right) & \dots & \text{gcd}\left(x_2,x_n\right) \\ \text{gcd}\left(x_3,x_1\right) & \text{gcd}\left(x_3,x_2\right) & \text{gcd}\left(x_3,x_3\right) & \dots & \text{gcd}\left(x_3,x_n\right) \\ \dots & \dots & \dots & \dots & \dots \\ \text{gcd}\left(x_n,x_1\right) & \text{gcd}\left(x_n,x_2\right) & \text{gcd}\left(x_n,x_3\right) & \dots & \text{gcd}\left(x_n,x_n\right) \\ \end{vmatrix}\)
    • \[e=\sum_{i=0}^{n} {\frac{1}{i!}}\]
    • \[S_{n} =\sum _{ k=1 }^{ n }{ \left[ \frac{(3k+6)!+1}{3k+7}-\left[ \frac{(3k+6)!}{3k+7} \right]  \right]  }  \]

기호

  • <=, >=, != 대신 , , 를 사용해야 합니다.
    • 1 <= N <= 100 → 1 ≤ N ≤ 100
    • a != b → a ≠ b
  • 곱하기를 표현할 때, * 대신 ×를 사용해야 합니다.
    • 3*4 = 12 → 3×4 = 12
  • floor는 ⌊⌋, ceil은 ⌈⌉을 사용해서 나타낼 수 있습니다.
    • ⌈3.4⌉
    • ⌊2.5⌋
  • 집합은 , , , , , 와 같은 기호를 이용해 나타낼 수 있습니다.
  • $는 Mathjax를 사용할 때 사용해야 하기 때문에, \$를 이용해야 합니다.
  • 이미지로 업로드한 에디터, BOJ의 내 파일을 이용해 업로드한 이미지가 아닌 경우, 주소는 https를 사용해야 합니다.

  • 수와 숫자를 헷갈리면 안됩니다. 수는 number, 숫자는 digit입니다.
    • 첫째 줄에 숫자 N(1 ≤ N ≤ 100)이 주어진다. → 첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
  • 음수를 나타낼 때, - 1와 같이 부호와 수 사이에 공백을 삽입하면 안됩니다.
    • - 1 ≤ x ≤ 1 → -1 ≤ x ≤ 1
  • 자릿수를 구분할 때는 ,을 이용해서 구분해야 합니다.
    • -1000000 ≤ x ≤ 1000000 → -1,000,000 ≤ x ≤ 1,000,000
    • -1 000 000 ≤ x ≤ 1 000 000 → -1,000,000 ≤ x ≤ 1,000,000
    • -1, 000, 000 ≤ x ≤ 1, 000, 000 → -1,000,000 ≤ x ≤ 1,000,000
  • 1e4, 1e6, 1e-9 대신 104, 106, 10-9와 같은 표현을 사용해야 합니다.
  • 소수점 형태의 실수가 주어지는 경우에는 소수점 자릿수가 문제에 써있어야 합니다.

예제

  • 여러가지 형태의 정답이 가능한 경우, 예제로 모두 보여주는 것이 좋습니다.
    • 첫째 줄에 집까지 가는 거리의 최소값을 출력한다. 단, 집까지 갈 수 없는 경우에는 -1을 출력한다.
      이 경우 최소값을 구하는 예제, -1을 출력하는 예제가 모두 필요
  • 모든 예제 입력과 출력은 줄 바꿈(\n)으로 끝나야 합니다. 아래 예시에서 살펴보세요.

문제

  • 의미없는 괄호는 사용하지 않는 것이 좋습니다.
    • 두 도시 A와 B사이에는 도로가 존재한다. (단, A와 B 사이에 도로가 여러개 존재할 수도 있다.)

      두 도시 A와 B사이에는 도로가 존재한다. 단, A와 B 사이에 도로가 여러개 존재할 수도 있다.
  • 한글, 한자와 같이 ASCII문자가 아닌 문자를 출력하는 문제는 채점이 되지 않을 수도 있습니다.

데이터

  • 파일명은 알파벳 대문자 (A, B, ..., Z), 알파벳 소문자 (a, b, ..., z), -, _, 숫자 (0, 1, ..., 9)로만 이루어져 있어야 합니다.
    정규표현식으로 나타내면 파일명은 [A-Za-z0-9-_]+와 매치될 수 있어야 합니다.
  • 서브태스크 문제의 데이터 파일명은 subtask%d-로 시작해야 합니다. 여기서 %d는 서브태스크 번호입니다. subtask1-data.in, subtask2-data-4.in는 각각 올바른 서브태스크 1의 데이터 파일 이름, 서브태스크 2의 데이터 파일 이름 입니다.
  • 문제에 추가된 예제는 자동으로 데이터에 추가됩니다. 채점에서 제외하려면 문제 탭에서 "예제 채점"을 제외로 설정해야 합니다.
  • 파일명이 sample로 시작하면 안됩니다.
  • 입력 파일의 확장자는 in입니다.
  • 출력 파일의 확장자는 out입니다.
  • 입력 파일과 확장자만 다른 파일이 그 입력 파일에 해당하는 출력 파일 입니다.
    • 입력 파일 data.in에 대응하는 출력 파일은 data.out입니다.
    • 입력 파일 data-3.in에 대응하는 출력 파일은 data-3.out입니다.
  • 파일명은 대/소문자를 구분합니다.
    • data.inData.in은 다른 파일입니다.
  • 의미없는 공백이 줄의 뒷 쪽에 있으면 안됩니다. "는 공백을 보기 위해 삽입한 기호입니다.
  • 데이터의 모든 줄은 줄 바꿈(\n)으로 끝나야 합니다.
    • 올바른 데이터: 모든 줄이 \n으로 끝났음
    • 잘못된 데이터 1: 마지막 줄이 \n로 끝나지 않았음
    • 잘못된 데이터 2: 마지막에 빈 줄이 하나 더 있음
    • 데이터 업로드 시에 자동으로 모든 줄이 \n으로 끝나는지 검사합니다. \n으로 끝나지 않는 줄에는 자동으로 \n이 추가됩니다.
  • 줄 바꿈을 \n, \r, \r\n 중에서 어떤 것으로 사용할지 신경쓰지 않아도 됩니다. 데이터 업로드 시에 자동으로 \n으로 바꿉니다.
  • 데이터 파일은 UTF-8로 인코딩 되어 있어야 합니다.
  • 데이터 파일의 크기 제한은 없지만, 이 사이트를 통해서 업로드할 수 있는 파일 크기의 최대값은 200MB 입니다.

스페셜 저지

  • 스페셜 저지는 테스트 메뉴에서 추가할 수 있습니다.
  • Java, Python 및 그 외의 언어로도 구현할 수는 있지만, 성능을 위해 C++로 작성하는 것을 권장합니다. 꼭 다른 언어로 작성해야 하는 경우에는 관리자에게 문의해주세요.
  • BOJ-spj에 있는 spj.cpp을 기반으로도 구현할 수 있습니다. (필수는 아님)
  • assert함수를 이용해 검사하는 것도 좋습니다.
  • 프로그램의 exit code가 0이면 정답, 0이 아니면 정답이 아닙니다.
  • 스페셜 저지의 수행 시간은 빠를 수록 좋습니다. 최대값은 60초입니다.
  • testlib.h을 사용하는 경우에는 BOJ-spj에 있는 testlib.h를 이용해 주세요.
  • testlib.h는 미리 복사되어져 있습니다. 따로 소스에 붙여넣을 필요는 없습니다.

에디터 팁

  • 붙여넣기
    • 는 포맷 없이 글씨만 붙여넣기 할 수 있는 버튼입니다.
      • 단축키 : ⌘+⇧+V
  • 이미지
    • 를 클릭하면 이미지를 업로드 할 수 있습니다.
    • 는 사용하지 말아주세요.
    • 이미지를 더블 클릭하면 그림 크기를 변경할 수 있습니다.
    • 여기서 클릭하면 이미지 크기를 구할 수 있습니다.
    • 을 클릭하면 width, height를 원본 비율에 맞춰서 조절할 수 있습니다.
  • 포맷
    • 을 이용해 스타일을 모두 제거할 수 있습니다. 다른 프로그램에서 복사/붙여넣기를 했을 때, 같이 붙여넣기 된 스타일을 제거할 때 사용합니다.
      • 태그: <strong>
      • 단축키 : Ctrl+B / ⌘+B
      • 예시 : 굵은 글씨
      • 태그: <em>
      • 단축키 : Ctrl+I / ⌘+I
      • 예시 : 기울인 글씨
      • 태그: <u>
      • 단축키 : Ctrl+U / ⌘+U
      • 예시 : 밑 줄
      • 태그: <s>
      • 예시 : 취소선
      • 태그: <sup>
      • 예시 : 230
      • 태그: <sub>
      • 예시 : Ai
    • <code> 태그는 스타일 → Computer Code를 눌러 적용할 수 있습니다.
    • <pre> 태그는 본문 → 정형 문단을 눌러 적용할 수 있습니다.