[백준] 2557번 Hello World! 출력하기

권태형·2023년 11월 20일

알고리즘

목록 보기
1/33

아주아주아주 간단한 문제라고 생각했다.

javascript로 이 문제를 풀때는 진짜 콘솔에 찍기만 하면 문제를 통과했다.

console.log("Hello World!")

지금은 Unity를 이용한 C#을 자주 사용하기 때문에 C#으로 문제를 풀어보려고 했다. 생각은 똑같이 그냥 로그를 찍는다는 생각으로 진행하였으나 컴파일 에러가 발생했다.

print("Hello World!")

//---------------------

Debug.log("Hello World!")

unity에서 스크립트를 연동해서 문자열을 출력할 때 위와같은 두 가지 방법을 사용하였는데 이 두 가지 방식은 실질적으로 터미널 콘솔에 문자열을 출력해주는 것이 아닌 UnityEngine을 임포트해서 unity에디터의 콘솔창에 문자열을 출력해주는 방식이라 백준에서는 읽을 수 없었다.

그럼 C#에서 문자열을 출력하기 위한 로그를 뽑는 메소드는 뭔지 찾아보자 Console.WriteLine()메소드가 존재했다.

class Main
{
    static void Main()
    {
        Console.WriteLine("Hello World!");
    }
}

결과는 컴파일 에러error CS0542: 'Main': member names cannot be the same as their enclosing type

JAVA에서는 아래와 같이 Main 클래스에 main(String arg[])메소드를 사용한다.

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

하지만 C#에서는 클래스와 함수명이 겹칠 수 없게끔 만들어 져 있었다. 솔직히 클래스명은 보통 명사로, 메소드는 동사로 쓰다보니 보통은 겹칠일은 없지만, JAVA에서 main메소드의 경험상 위와 같이 작성을 했더니 바로 컴파일 에러를 뱉었다.

클래스 명을 바꾸고 다시 시도하니 바로 통과

class HelloWorld
{
    static void Main()
    {
        Console.WriteLine("Hello World!");
    }
}

위의 세가지 언어를 써보면서 느낀건 JAVA가 생각보다 느리다는점, 다른 언어보다 써야할 코드량이 더 많다는점, C#은 클래스와 메소드명이 겹치면 안된다는점, JAVA나 C#에서 굳이 using을 통한 System을 불러올 필요가 없다는 점 등을 알 수 있었다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글