728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net


1. 입출력과 사칙연산

10869. 사칙연산


이미지를 클릭하시면 문제 페이지로 이동합니다.

순서대로 단계별을 풀어 오셨으면 어려울 것은 없지만, 

2가지 정도 주의 깊게 볼만한(틀릴만한) 부분이 있는 것 같네요.

 

1. A/B (몫) 

  • 이게 뭐 어쨌다고? 싶을 수 있지만, c++ 과 파이썬에서 미묘하게 다른 부분입니다. 
  • 문제에서는 '몫' 이라는 자연수를 요구한다는 사실을 유의해서 풀어보세요.
  • 풀어보시고, 모르겠으면 아래의 언어별 풀이를 봐주세요.

 

2. % ?

새로 등장한 기호가 있습니다. '%' 인데요.

  • 나머지 연산이라는 의미로, '모듈러' 연산 혹은 기호 라고도 합니다. 
  • a % b = a를 b로 나눈 나머지를 구하라.
  • +, -, *, / 와 같이 %도 그대로 써 주시면 됩니다. 이제 C++의 산술 연산자는 모두 배웠네요.

 

c++과 파이썬의 연산자에 대해 더 알고 싶은 분들은 아래의 링크를 참고 해 주세요. (추가 예정)

 


C++

c++의 경우 int형 자연수를 / 로 나눌 경우 int형으로 결과가 반환됩니다.
문제에서 자연수만 input으로 들어온다고 했으니, 그대로 int로 받은 후 사용하시면 됩니다.

 

최종 코드

#include <iostream>

int main(){
    int a, b;
    std::cin >> a >> b;
    
    std::cout << a+b << "\n";
    std::cout << a-b << "\n";
    std::cout << a*b << "\n";
    std::cout << a/b << "\n";
    std::cout << a%b << "\n";

}

 


Python

파이썬의 경우, c++처럼 냅다 /를 써버리면 안 됩니다.

파이썬에서는 '나누기' 연산과 '몫' 연산이 분리되어 있습니다.

 

' / ' 연산자

  • 나누기 연산입니다.
  • int를 사용한다고 해도 실수형으로 결과가 반환됩니다.
  • 만약 이 기호를 사용했다면, 결과값을 int로 형 변환하는 과정이 필요합니다.

 

' // ' 연산자

  • c++에는 존재하지 않는 기호임을 유의하세요.
  • '몫' 을 구하는 연산으로 항상 자연수가 반환됩니다. 이 문제에서 원하는 연산자는 아마도 이 연산자겠죠.

 

최종 코드

a, b = map(int,input().split())

print(a+b)
print(a-b)
print(a*b)
print(a//b)
print(a%b)

아래와 같이 print를 한 번만 호출하면 더 좋겠죠.

a, b = map(int,input().split())

print(a+b,a-b,a*b,a//b,a%b,sep='\n')

 

 

728x90
728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net


1. 입출력과 사칙연산

1008. A/B


이미지를 클릭하면 해당 문제 페이지로 이동합니다.

 

만약 입출력 방식에 익숙하지 않으신 분들은 아래의 글을 참고 해 주세요.

 

C++ 기본 입출력

 

[C++] 기본 입출력 ( cin | cout | scanf | printf )

기본 입출력 함수 헤더 파일 #include 위의 헤더파일을 반드시 추가해야 사용 가능합니다. cin,cout 모두 std 네임스페이스 내에 존재합니다. 참고로 아래의 코드를 추가하면 std:: 를 붙이지 않고도 사

where-i-am.tistory.com

 

python 기본 입출력

 

[Python] 기본 입출력 ( input | split | map | sys.stdin.readline | print )

기본 입력 함수 input() 가장 기본적인 입력 함수입니다. 개행 문자 이전까지의 1 line을 읽어옵니다. str = input() #input : hello print(str) # output : hello 특별히 형식을 정해주지 않으면 string 형식으로..

where-i-am.tistory.com

 

 

'%' 문자를 나눗셈 연산자로 착각하기 쉬운데 키보드의 ? 키의 '/' 임을 유의하세요.

 

만약 파이썬으로 풀고 계시다면 이건 뭔가 더 붙어 있네... 하는 정도로 가볍게 넘어가실 수 있지만,

c++로 풀고계시다면 처음으로 약간 혼돈이 올 수 있을 것 같네요. 

여기서 주목해야 할 부분은 출력값의 절대오차 혹은 상대오차가 10^-9이하여야 한다는 부분입니다. 

 


C++

먼저, c++의 데이터 타입 및 범위가 생소하다면 아래의 문서를 참고 해 주세요.

 

[C++] 데이터 형식 | 크기 | 범위 ( Data type | size | range )

출처: Data Type Ranges Learn more about: Data Type Ranges docs.microsoft.com Visual Studio 2019 기준 유형 이름 크기 (byte) 기타 이름 값의 범위 int 4 signed –2,147,483,648 ~ 2,147,483,647 unsigned..

where-i-am.tistory.com

 

c++로 이 문제를 풀 때 자주 빠트리는 지점은 2가지입니다.

  1. 변수 타입을 실수형으로 사용했는지
    • 여지껏 int만 주구장창 썼기 때문에 관성적으로 int를 사용할 가능성.
    • 여기서는 10^-9 이하의 오차만 허용하기에, 최대 소수점 9자리만 지원하는 float를 사용하시면 안됩니다.
    • 최대 소수점 15자리까지 지원하는 double 형을 사용해야 합니다. 
  2. 소수점 표현 범위를 제대로 지정했는지
    • 아래의 코드를 봅시다. 결과가 어떻게 나올까요?
      #include <iostream>
      
      int main() {
      
          double a = 1;
          double b = 3;
          std::cout << a/b;
      
      }

      1008번 문제의 예시처럼 0.33333333333333333.. 이 나올 거라고 생각하기 쉽지만,
      결과는 0.333333 입니다. 이러면 오차가 10^-9 보다 커지게 됩니다.
    • 이렇게 출력되는 이유는 c++ 에서 기본적으로 소수점 출력 범위가 6자리 디폴트로 설정되어 있기 때문입니다.
    • c++ 소수점 자리수 설정 코드는 아래와 같습니다. 
      std::cout.precision(10);	//괄호 안에 출력하고 싶은 소수점 자리수를 입력합니다.  ​

 

최종 코드

#include <iostream>

int main(){
    double a, b;
    
    std::cin >> a >> b;
    std::cout.precision(10);	// 15까지 해도 됩니다. 10자리부터 정답이 나옵니다.
    std::cout << a/b ;
}

 


Python

python의 경우에는 사실상 다 알아서 해주고 소수점 자리수도 길~게 출력 해 주기 때문에 그냥 하시면 됩니다. (..)

언젠가 다시 다루겠지만 이렇게 숫자나 문자를 다루는 문제에서는 파이썬을 활용하는 게 훨씬 간편한 경우가 많습니다. ( 코테에서 )

 

최종 코드

a, b = map(int,input().split())
print(a/b)
728x90
728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net


1. 입출력과 사칙연산

10998. AxB

이미지를 클릭하면 해당 문제 페이지로 이동합니다.


입력을 받아서 변수에 저장한 후 연산 및 출력하는 방법을 배우는 문제입니다.

 

입출력 방식에 익숙하지 않으신 분들은 아래의 글을 참고 해 주세요.

 

C++ 기본 입출력

 

[C++] 기본 입출력 ( cin | cout | scanf | printf )

기본 입출력 함수 헤더 파일 #include 위의 헤더파일을 반드시 추가해야 사용 가능합니다. cin,cout 모두 std 네임스페이스 내에 존재합니다. 참고로 아래의 코드를 추가하면 std:: 를 붙이지 않고도 사

where-i-am.tistory.com

 

python 기본 입출력

 

[Python] 기본 입출력 ( input | split | map | sys.stdin.readline | print )

기본 입력 함수 input() 가장 기본적인 입력 함수입니다. 개행 문자 이전까지의 1 line을 읽어옵니다. str = input() #input : hello print(str) # output : hello 특별히 형식을 정해주지 않으면 string 형식으로..

where-i-am.tistory.com

 

 

'x' 문자를 곱셈 연산자로 착각하기 쉬운데 키보드의 숫자 8 위의 '*' 임을 유의하세요.

 

C++

 

#include <iostream>

int main(){
	int a, b;	//변수 선언
    
	std::cin >> a >> b;	//입력
	std::cout << a*b;	//출력
}

 


 

Python

 

a, b = map(int, input.split())
print(a*b)

 

 

728x90
728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net


1. 입출력과 사칙연산

1001. A-B

이미지를 클릭하면 해당 문제 페이지로 이동합니다.


 

입력을 받아서 변수에 저장한 후 연산 및 출력하는 방법을 배우는 문제입니다.

 

입출력 방식에 익숙하지 않으신 분들은 아래의 글을 참고 해 주세요.

 

C++ 기본 입출력

 

[C++] 기본 입출력 ( cin | cout | scanf | printf )

기본 입출력 함수 헤더 파일 #include 위의 헤더파일을 반드시 추가해야 사용 가능합니다. cin,cout 모두 std 네임스페이스 내에 존재합니다. 참고로 아래의 코드를 추가하면 std:: 를 붙이지 않고도 사

where-i-am.tistory.com

 

python 기본 입출력

 

[Python] 기본 입출력 ( input | split | map | sys.stdin.readline | print )

기본 입력 함수 input() 가장 기본적인 입력 함수입니다. 개행 문자 이전까지의 1 line을 읽어옵니다. str = input() #input : hello print(str) # output : hello 특별히 형식을 정해주지 않으면 string 형식으로..

where-i-am.tistory.com

 

 


 

C++

 

#include <iostream>

int main(){
	int a, b;	//변수 선언
    
	std::cin >> a >> b;	//입력
	std::cout << a-b;	//출력
}

 


 

Python

 

a, b = map(int, input.split())
print(a-b)

 

 

 

 

728x90
728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net


1. 입출력과 사칙연산

1000. A+B

이미지를 클릭하면 해당 문제 페이지로 이동합니다.


처음으로 입력을 받아서 처리해야 하는 순간이 왔습니다.

입력을 받아서 변수에 저장하는 방법을 배우는 문제입니다.

 

입출력 방식에 익숙하지 않으신 분들은 아래의 글을 참고 해 주세요.

 

C++ 기본 입출력

 

[C++] 기본 입출력 ( cin | cout | scanf | printf )

기본 입출력 함수 헤더 파일 #include 위의 헤더파일을 반드시 추가해야 사용 가능합니다. cin,cout 모두 std 네임스페이스 내에 존재합니다. 참고로 아래의 코드를 추가하면 std:: 를 붙이지 않고도 사

where-i-am.tistory.com

 

python 기본 입출력

 

[Python] 기본 입출력 ( input | split | map | sys.stdin.readline | print )

기본 입력 함수 input() 가장 기본적인 입력 함수입니다. 개행 문자 이전까지의 1 line을 읽어옵니다. str = input() #input : hello print(str) # output : hello 특별히 형식을 정해주지 않으면 string 형식으로..

where-i-am.tistory.com

 

 


 

C++

 

#include <iostream>

int main(){
	int a, b;	//변수 선언
    
	std::cin >> a >> b;	//입력
	std::cout << a+b;	//출력
}

 


 

Python

 

a, b = map(int, input.split())
print(a+b)

 

 

728x90
728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net


1. 입출력과 사칙연산

10171. 고양이


이미지를 클릭하면 문제 페이지로 이동합니다.

이것도 대표적인 기본 예제 중에서, 당황스러운 문제 중 하나인 듯 합니다. 

너무 쉬워보여서 막상 해보면, 생각대로 출력되지 않기 때문이죠.

이스케이프 시퀀스에 해당하는 문자를 출력하는 방법을 알아야 풀 수 있습니다. 


이스케이프 시퀀스

일단 이스케이프 시퀀스가 생소하다면, 아래의 글을 참고 해 주세요.

 

[C++] 이스케이프 시퀀스 ( Escape Sequence )

이스케이프 시퀀스 : Escape Sequence 출력 시에 특별한 제어 기능을 가진 문자열. 언어마다 제공하는 종류가 다르기 때문에, 확인 필요. \ 기호 키보드에서 대개 엔터 키 바로 위에 있는 버튼입니다.

where-i-am.tistory.com

 

[Python] 이스케이프 시퀀스 ( Escape Sequence )

이스케이프 시퀀스 : Escape Sequence 출력 시에 특별한 제어 기능을 가진 문자열. 언어마다 제공하는 종류가 다르기 때문에, 확인 필요. \ 기호 키보드에서 대개 엔터 키 바로 위에 있는 버튼입니다.

where-i-am.tistory.com


C++

출력해야 하는 문자열은 아래와 같습니다.

\    /\
 )  ( ')
(  /  )
 \(__)|

 

여기에서 이스케이프 시퀀스로 출력해야 하는 부분만 강조 해 보겠습니다.

   /\
 )  ( ')
(  /  )
 \(__)|

 

해당하는 문자만 이스케이프 시퀀스로 바꾼 결과입니다.

\\    /\\
 )  ( \')
(  /  )
 \\(__)|

 

 

최종 코드

#include <iostream>

int main(){
      std::cout << "\\    /\\\n";
      std::cout << " )  ( \')\n";
      std::cout << "(  /  )\n";
      std::cout << " \\(__)|\n";
}
  • 각 행의 문자열 마다 \n(개행문자)를 잊지 마세요.

Python

python도 동일하게 처리 해 주시면 됩니다.

 

최종 코드

print("\\    /\\")
print(" )  ( \')")
print("(  /  )")
print(" \\(__)|")

 

728x90
728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net

 


1. 입출력과 사칙연산

10718. We love kriii


이미지를 클릭하면 문제 페이지로 이동합니다.

기본적인 텍스트 출력 시에 줄바꿈 하는 방법을 물어보는 문제입니다.

반복문으로 작성할 수도 있겠지만 겨우 2번 출력이니 줄바꿈 방법에 대해서만 말하겠습니다. 


C++

1. endl 을 사용한 줄바꿈

#include <iostream>

int main(){
	std::cout << "강한친구 대한육군" << endl;
	std::cout << "강한친구 대한육군" << endl;
}

가장 간단하고, 대표적인 방식이지만 endl은 실행 속도를 느리게 하는 단점을 가집니다. 

 

2. "\n"을 사용한 줄바꿈

#include <iostream>

int main(){
	std::cout << "강한친구 대한육군\n";
	std::cout << "강한친구 대한육군\n";
}

이스케이프 시퀀스인 "\n" 을 사용한 방식입니다.

문자열처럼 사용하지만, 실제 출력되지는 않고 줄바꿈의 효과를 가집니다.

여러 언어에서 통용되는 줄바꿈 방식이기도 합니다. ( C, python 등 )

  • endl보다 확연하게 빠른 속도를 보이기 때문에 시간 제한이 있는 문제(백준 문제)에 권장하는 방식입니다.
  • 지금은 아주 기초 문제이기 때문에 제한 시간이 중요하진 않지만, 이후에는 통과를 결정하기도 하니 2번으로 사용하도록 습관을 들이시는 걸 추천합니다. 

 


Python

python의 경우에는 print 사용 시에 기본적으로 줄바꿈을 시행합니다. 

따라서 아래와 같이 사용하시면 됩니다. 

print("강한친구 대한육군")
print("강한친구 대한육군")
  • python에서는 문자열에도 ' (작은 따옴표)를 사용할 수 있으니 대체하셔도 됩니다.

혹은 "\n"을 사용하여 print를 한 번만 사용하여 해결할 수도 있습니다. 

print("강한친구 대한육군\n강한친구 대한육군")
728x90
728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net


1. 입출력과 사칙연산

2557. Hello World


이미지를 클릭하면 문제 페이지로 이동합니다.

이유는 모르겠으나 대부분의 언어 수업에서 가장 첫번째 예제로 사용되는 문장입니다. 

이번에 포스팅을 시작하면서 왠지 궁금해져서 왜 Hello World인지 찾아봤어요. 아래와 같다고 합니다. 

 

1978년에 브라이언 커니핸과 데니스 리치가 쓴 "The C Programming Language" 교재의 첫 번째 예제가 화면에 "Hello, world!"를 출력하는 것이었고, 이것이 유명해지면서 모든 프로그래밍 언어의 첫번째 예제로 굳어지게 되었다.

출처 : 나무위키 Hello, world!

기본적으로 입력 받는 것 없이 단순히 텍스트를 출력하는 것을 배워 보는 문제입니다. 

형식만 잘 익혀두면 됩니다.

 


C++

c++의 경우 앞으로의 모든 프로그램에 있어서 반드시 필요한 기본 형식이 있습니다.

일종의 테두리이자 뼈대라고 생각하시면 됩니다.

 

기본 형식

#include <iostream>

int main(){

}

 

1. 먼저 첫번째 라인을 봅시다.

#include <iostream>

여기서 #include <> 이 부분은 항상 동일한 부분입니다.

<> 안에 해당하는 이름의 헤더파일을 내가 이 프로그램에 포함하겠다 라는 의미입니다.

즉, 이 표현은 이 프로그램에 iostream이라는 헤더파일을 포함하겠다. 라는 뜻입니다. 

  • iostream : c++ 에서 입출력을 위해 사용하는 헤더파일입니다. 백준 문제를 풀기 위해서는 반드시 포함해야겠죠?

2. 나머지 아래 라인을 봅시다.

int main(){

}

대부분의 프로그래밍 언어는 함수라는 형식을 가지고 있습니다. 

c++에서는 이 함수의 형식을 가진 메인 함수 내에서 프로그램의 동작이 이루어집니다. 

함수는 아래와 같은 기본 형식을 가집니다.

  • output 형식 : 위 예제에서는 int에 해당합니다. 
  • 함수의 이름 :  여기서는 메인함수이기 때문에 main으로 이름이 고정되어 있습니다. 
  • 매개변수 형식과 이름 : () 에 해당하는 부분으로, 여기서는 매개변수를 사용하지 않기 때문에 비워둡니다.
  • 함수 내용 : { } 에 해당하는 부분으로, 이 괄호 안에서 모든 프로그램이 작성이 됩니다. 

이 형식은 이해할 것도 없고 그냥 받아들이시면 됩니다. 외우려고 하지 않으셔도 언젠가는 외워질 수 밖에 없습니다. 

 

출력

std::cout << "Hello World!";

c++에서는 c언어처럼 따로 출력 형식을 지정할 필요 없이 위와 같이 바로 std::cout을 사용하여 출력하면 됩니다.

 

최종 코드

#include <iostream>

int main(){
	std::cout << "Hello World!";
}

 


Python

python의 경우에는 메인 함수 없이 바로 출력을 진행하면 됩니다. 

 

최종 코드

print("Hello World!")
  • python에서는 문자열에도 ' (작은 따옴표)를 사용할 수 있으니 대체하셔도 됩니다.
  • python에서 ; (세미콜른)을 코드 끝에 사용하면 문법에 맞지 않습니다. 
728x90

+ Recent posts