백준 알고리즘을 시작하기에 좋은,
단계별 시작하기의 1단계 입출력과 사칙연산 의 첫번째 문제입니다.
프로그래밍 언어를 공부해보셨다면 누구나 이것과 함께 시작하죠!
Hello World 출력하기 (. ❛ ᴗ ❛.) ‼‼ https://www.acmicpc.net/problem/2557
그리고 꼭 알아야 할 BOJ 작동 원리 도 읽어보세요! 😀
해당 문제를 저는 간단하게 Python으로 print('Hello World!')
작성했는데, 숏코딩 들어가보니 PHP, TEXT로 Hello World!
하신 분들도 많으시더라구요 😂
간단하게 언어별 Hello World 출력 차이를 설명해보자면,
인터프리터 언어로 알고 있는 앞서 본 Python, PHP 그리고 Ruby는 대게 한 줄의 코드면 충분하죠. (Ruby 👉 puts "Hello World!"
)
(사실 인터프리터 언어, 컴파일 언어로의 100% 정확한 구분은 어렵습니다.
cf. Is Python interpreted, or compiled, or both?)
컴파일 언어에 비해
👉 이는 저의 의문이었습니다. 메모리 측면에서는 인터프리터가 유리하다고 배웠던 것 같은데, 채점 결과를 보면 그렇지 않았기 때문이죠. 실제 인터프리터 언어들은 해당 언어의 기본적인 라이브러리의 크기가 크게 차이가 나기 때문에 위와 같은 현상이 벌어집니다. 그래서 BOJ에서는 이런 언어의 차이를 보정하는 방안으로 Python 계열로 제출하는 답안에 대해서는 실행시간 +10초, 메모리 +512MB 의 여유를 준다고 합니다.
cf. "이 두 코드의 시간 차이가 나는 이유" (C vs Python)
👉 가장 큰 이유는 잦은 수정에도 매번 컴파일할 필요가 없다는 것입니다. 프로그램이 큰 경우 컴파일 시간도 아주 크기 때문이죠! 그리고 동적타입언어를 포함해 동적인 프로그래밍이 좀 더 쉬운 편이고, 그냥 프로그래밍 자체도 좀 더 쉬워서 그런 것 같습니다ㅎㅎ
흔히들 들어보셨을 프로그래밍 언어들의 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로 알아보는
이었습니다 ! 😀