[BOJ #2557] 백준 알고리즘 시작하기 - 언어별 "Hello World!"

백준 알고리즘을 시작하기에 좋은,
단계별 시작하기의 1단계 입출력과 사칙연산 의 첫번째 문제입니다.
프로그래밍 언어를 공부해보셨다면 누구나 이것과 함께 시작하죠!
Hello World 출력하기 (. ❛ ᴗ ❛.) ‼‼ https://www.acmicpc.net/problem/2557

👉 백준 알고리즘 문제 풀이 방법

  1. 문제 클릭 후 문제 확인
  2. '제출' 탭을 눌러 소스 코드를 작성 및 제출
  3. 정답 시 '맞은 사람' 탭에서 다른 사람들이 공개한 소스 코드(언어 부분에 넘어갈 수 있는 링크가 걸려있는 친구들) 확인 가능!

그리고 꼭 알아야 할 BOJ 작동 원리 도 읽어보세요! 😀

해당 문제를 저는 간단하게 Python으로 print('Hello World!') 작성했는데, 숏코딩 들어가보니 PHP, TEXT로 Hello World! 하신 분들도 많으시더라구요 😂

🤔프로그래밍 언어마다 다른 Hello World?

간단하게 언어별 Hello World 출력 차이를 설명해보자면,
인터프리터 언어로 알고 있는 앞서 본 Python, PHP 그리고 Ruby는 대게 한 줄의 코드면 충분하죠. (Ruby 👉 puts "Hello World!" )
(사실 인터프리터 언어, 컴파일 언어로의 100% 정확한 구분은 어렵습니다.
  cf. Is Python interpreted, or compiled, or both?)

컴파일 언어에 비해

  • 코드 길이는 짧으나
  • 실행 시간이 느리고
  • 메모리의 측면에서 크게는 300배까지 차이가 나기도 합니다. (BOJ 채점 해당 문제 기준)

Q. 잠깐, 인터프리터는 목적 프로그램을 만들지 않기 때문에 메모리 할당이 컴파일러에 비해 크지 않은게 정상 아닌가요?

👉 이는 저의 의문이었습니다. 메모리 측면에서는 인터프리터가 유리하다고 배웠던 것 같은데, 채점 결과를 보면 그렇지 않았기 때문이죠. 실제 인터프리터 언어들은 해당 언어의 기본적인 라이브러리의 크기가 크게 차이가 나기 때문에 위와 같은 현상이 벌어집니다. 그래서 BOJ에서는 이런 언어의 차이를 보정하는 방안으로 Python 계열로 제출하는 답안에 대해서는 실행시간 +10초, 메모리 +512MB 의 여유를 준다고 합니다.
cf. "이 두 코드의 시간 차이가 나는 이유" (C vs Python)

Q. 그렇다면 인터프리터 언어는 왜 사용되는 걸까요?

👉 가장 큰 이유는 잦은 수정에도 매번 컴파일할 필요가 없다는 것입니다. 프로그램이 큰 경우 컴파일 시간도 아주 크기 때문이죠! 그리고 동적타입언어를 포함해 동적인 프로그래밍이 좀 더 쉬운 편이고, 그냥 프로그래밍 자체도 좀 더 쉬워서 그런 것 같습니다ㅎㅎ

Anyway!

흔히들 들어보셨을 프로그래밍 언어들의 Hello World 표현 방법을 살펴보자면,

컴파일 언어는 C, C++의 경우 아래와 같이 코딩하는 것이 일반적입니다.

#include <stdio.h>

int main() {
    printf("Hello World!");
    return 0;
}

두 방식이 혼합된 하이브리드 언어의 코딩은 다음과 같습니다.

C# 의 경우

using System;

namespace FirstProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Java 의 경우

public class Main {
 
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

간단히 Hello World로 알아보는

  • 언어별 문법 비교
  • 인터프리터 vs 컴파일러
  • 백준알고리즘 사이트 사용방법

이었습니다 ! 😀

좋은 웹페이지 즐겨찾기