728x90

 

아이폰 버전별 화면 크기 및 해상도


 

버전 화면 크기 (인치) 해상도 (px)
3gs 3.5 320 x 480
4, 4s 3.5 640 x 960
5, 5s, 5c, SE 4 640 x 1136
6, 6s, 7, 8, SE2 4.7 750 x 1334
6+, 6s+, 7+, 8+ 5.5 1080 x 1920
X, Xs, 11 Pro 5.8 1125 x 2436
Xr, 11 6.1 828 x 1792
Xs Max, 11 Pro Max 6.5 1242 x 2688
12 mini 5.4 1080 x 2340
12, 12 Pro 6.1 1170 x 2532
12 Pro Max 6.7 1284 x 2778

 


 

아이패드 버전별 화면 크기 및 해상도


 

버전 화면 크기 (인치) 해상도 (px)
mini 7.9 1536 x 2048
 5, 6
Air 1, 2
9.7형 Pro 1
9.7 1536 x 2048
7, 8 10.2 1620 x 2160
Air 3
10.5형 Pro 1
10.5 1668 x 2224
Air 4 10.9 1640 x 2360
11 형 Pro 1, 2, 3 11 1668 x 2388
12.9형 Pro 1, 2, 3, 4, 5 12.9 2048 x 2732

 


앱에 들어갈 이미지의 크기

  • 기본적으로 기기의 최대 해상도에 맞춤.
728x90
728x90


기본 입출력 함수


헤더 파일

#include <iostream>
  • 위의 헤더파일을 반드시 추가해야 사용 가능합니다.
  • cin,cout 모두 std 네임스페이스 내에 존재합니다.

 

 

참고로 아래의 코드를 추가하면 std:: 를 붙이지 않고도 사용할 수 있습니다.

 

 

1.전체 네임스페이스를 std로 선언하는 방식.

이는 추후에 문제가 생길 수 있는 방식이니 초반에만 사용하도록 합니다.

using namespace std;​

 

2. cin,cout에 대해서만 네임스페이스를 지정해주는 방식

이 방식이 좀 더 권장되는 방식입니다. 

(사실 귀찮아서.. 저는 1번도 자주 사용합니다.) 

using std::cin;
using std::cout;

 


std::cin 

 

#include <iostream>	

int main(){
	int num;	//변수 선언
	std::cin >> num;	//변수 입력
}
  • 가장 기본적인 cin의 활용 방식입니다.
  • 백준 저지의 경우라면 입력으로 보여주는 숫자들이 프로그램 흐름상 차례로 변수에 입력되게 됩니다.
  • >> 의 방향에 유의하도록 합시다. 저는 변수에게 집어넣는다고 연상해서 외웠습니다.

std::cout

#include <iostream>

int main(){
	int num;	//변수 선언
	std::cin >> num;	//변수 입력
	std::cout << num;	//변수 출력
}
  • 앞서 cin으로 값을 입력받은 num 변수를 출력하는 모습입니다.
  • cin과 화살표 방향이 반대임을 꼭 유의하도록 합니다.

 

 

-여러개의 변수를 한꺼번에 입출력 시

std::cin >> a >> b;
std::cout << a << b;
    •  너무 횟수가 늘어나는 경우에는 당연히 반복문 등을 활용하도록 합니다.

 

 

 


 

시간 제한 환경에서의 빠른 입출력


 

  • 무턱대고 cin과 cout을 쓰다 보면, 백준 저지등에서 시간초과가 날 수 있습니다. 속도가 아주 느리거든요.
  • 속도가 느린 이유는 저도 자세히는 설명이 어렵지만(잘 모름), 대체로 2가지로 추려볼 수 있습니다.
    1. 타 언어(C나 Java등)와 달리 입출력하는 데이터의 형식을 지정하지 않습니다.(데이터가 int인지, string인지..) 아주 편리하죠.
    2. iostream이 cstdio와 동일한 버퍼 시스템을 사용하기 때문에. (잘 이해가 되지 않으나 printf, scanf등을 모두 호출한다고 함)
  • 그런데, 느리다고 해서 나쁜 걸까?
    • 그렇지는 않습니다. 아래의 방식들은 시간 제한이 있는 코딩테스트 등의 특수한 상황에서의 대처법일 뿐입니다.
    • cin, cout이 나중에 나온 언어이니 만큼 안정성, 확장성 등에서는 더 뛰어나다고 합니다. 

 

 

1.  C의 입출력 사용하기

 

헤더파일

 

#include <stdio.h>	//C의 방식
#include <cstdio>	//C++의 방식
  • stdio.h와 cstdio는 namespace가 다르다곤 하지만.. 다들 취향껏 사용하시는 듯 하니 골라서 쓰시면 됩니다.

 

 

scanf

 

#include <cstdio>

int main()
{
	int num;
	scanf("%d",&num);	//입력
}
  • %d란 무엇일까요?  cin과 달리 printf는 입력받는 데이터의 형식을 지정해 주어야 합니다. 
  • 바로 그 데이터의 형식을 알려주는 문자를 형식지정자 라고 합니다. 
    • 형식지정자에 관해서는 아래의 페이지를 참고 해 주세요! (추가 예정)

 

  • 그렇다면 입력 받는 변수 앞에 &를 붙이는 이유는 무엇일까요? (참고로 &는 코딩 초기에 자주 까먹습니다. 유의하세요.)
  • C에서 포인터를 배웠다면 아시겠지만.. &를 변수 앞에 붙여주면 변수의 메모리 주소라는 의미입니다.
  • 여기서는 num의 메모리 주소로 가서 입력받은 int 데이터를 입력하라는 뜻으로 보면 되겠죠.

 

  • 한번에 여러개의 입력을 받을 때는 아래처럼 사용하면 됩니다.
scanf("%d %d %d",&a,&b,&c);

 


printf

 

#include <cstdio>

int main()
{
	int num;
	scanf("%d",&num);
	printf("%d",num);	//출력
}
  • scanf와 거의 동일한 모양입니다. 다만 변수 앞에 &가 붙지 않음을 유의하세요.
  • scanf와 달리 문자열과 함께 사용할 수 있습니다. 아래와 같습니다.
printf("%d 더하기 %d 는 %d 입니다.\n",a,b,a+b);

 


 

2.  버퍼 동기화 끊기 + untie 

 

버퍼 동기화 끊기

ios_base::sync_with_stdio(false);
  • 앞서 말한 cstdio와 iostream의 버퍼 동기화를 끊어줍니다.
  • 메인 함수 안, 가장 윗줄에 추가하여 사용합니다.
  • 다만, 이걸 사용한 경우에 cin,cout을 사용하면서 printf,scanf를 동시에 사용하는 것은 불가능하니 유의합시다.

 

untie

cin.tie(NULL);
  • cin과 cout의 tie를 풀어줌으로써 속도를 향샹시키는 방식입니다.
    • cin과 cout의 tie의 의미 : 서로의 IO작업 전에 자동으로 버퍼를 비웁니다.
  • 따라서 이 코드를 사용한 경우에는 수동으로 버퍼를 비워줘야 합니다. (대체로 코딩테스트에서는 잘 없음)
  • 마찬가지로 메인 함수 안, 가장 윗줄에 추가하여 사용합니다.

 

 

저는 개인적으로 애초에 아래의 형식을 기본으로 두고 사용하는 편입니다. (대체로 백준에서는 문제 없었음)

#include <iostream>

using namespace std;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
    
	/*
	TODO
	*/

}

 

728x90
728x90


이스케이프 시퀀스 : Escape Sequence


  • 출력 시에 특별한 제어 기능을 가진 문자열.
  • 언어마다 제공하는 종류가 다르기 때문에, 확인 필요.

 


\ 기호

애플 키보드에서의 역슬래시

키보드에서 대개 엔터 키 바로 위에 있는 버튼입니다.

역슬래시 모양과 W에 가로로 줄을 그은 두가지 모양 모두 같은 기호입니다.

 

 

 


Python의 이스케이프 시퀀스

문자열 의미
\a 경보 문자
\b 백스페이스
\f 폼 피드(form feed)
\n 개행
\r 캐리지 리턴 ( carriage return )
\t 수평 탭
\v 수직 탭
\\ 백슬래시 출력
\' 작은따옴표 출력
\" 쌍따옴표 출력
\ooo 8진수 값 아스키코드 표현
\xhh 16진수 값 아스키코드 표현
\N{name} 유니코드의 character name으로 유니코드 표현 ( python ver 3.3 이상)
\uxxxx 4자리 16진수 값 유니코드 표현
\Uxxxxxxxx 8자리 16진수 값 유니코드 표현

폼 피드, 캐리지 리턴

  • 출력 장치 제어 문자
  • 폼 피드 : 한 페이지 넘겨서 출력.
  • 캐리지 리턴 : 캐리지 리턴 문자 뒷 부분만 출력.

*예시

print("Hello\rHi")

: 해당 코드는 Hi 를 출력합니다. 

 

  • 일정 크기(스페이스 바 4번) 만큼 띄워서 출력.

 

출력

  • 작은 따옴표, 쌍 따옴표는 사용 시에 컴파일러가 문자열의 시작이나 끝으로 인식합니다.
  • '\'도 마찬가지로 이스케이프 문자로 인식합니다. 
  • 따라서 해당 문자들을 출력하기 위해서 앞에 \를 붙여줍니다.

 

아스키코드 표현

  • \ 뒤에 3자리 단위의 8진수나 16진수의 아스키 코드 값을 넣어 해당 아스키 코드를 출력하는 방식.

아스키 코드표

*예시

print("아스키 코드로 02B 는 \02B")

: 해당 코드는 아스키 코드로 02B는 + 를 출력합니다. 

 

 

유니코드 표현

  • \ 뒤에 3자리 단위의 8진수나 16진수의 유니코드 값을 넣어 해당 유니코드를 출력하는 방식.
  • 유니코드는 종류가 무척 많으므로, 우측 페이지를 참조. -> 유니코드 문자 백과사전
  • 유니코드의 Character name은 우측 페이지를 참조. -> 유니코드 Character name

 

*예시

print("유니코드로 U+1F922 는 \U0001F922")

: 해당 코드는 유니코드로 U+1F922는 🤢 를 출력합니다. 

728x90
728x90

백준 단계별로 풀어보기

 

단계별로 풀어보기

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

www.acmicpc.net


1. 입출력과 사칙연산

10172. 개

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


바로 이전 문제인 10171.고양이(클릭)를 풀었다면, 동일한 방법으로 쉽게 해결 할 수 있습니다. 

풀다가 막히는 부분이 있다면, 위 글을 참고 해 보시면 됩니다.

 

 


C++

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

|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|

 

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

|\_/|
|q p|   /}
( 0 )"""\
|"^"`    |
||_/=\\__|

 

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

|\\_/|
|q p|   /}
( 0 )\"\"\"\\
|\"^\"\`    |
||_/=\\\\__|

 

 

최종 코드

#include <iostream>

int main(){
	std::cout << "|\\_/|\n";
	std::cout << "|q p|   /}\n";
	std::cout << "( 0 )\"\"\"\\\n";
	std::cout << "|\"^\"\`    |\n";
	std::cout << "||_/=\\\\__|\n";
}

 


Python

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

 

최종 코드

print('|\\_/|')
print('|q p|   /}')
print('( 0 )\"\"\"\\')
print('|\"^\"`    |')
print('||_/=\\\\__|')
  • python에서는 문자열에도 ' (작은 따옴표)를 사용할 수 있으니 대체하셔도 됩니다.
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


이스케이프 시퀀스 : Escape Sequence


  • 출력 시에 특별한 제어 기능을 가진 문자열.
  • 언어마다 제공하는 종류가 다르기 때문에, 확인 필요.

 


\ 기호

애플 키보드에서의 역슬래시

키보드에서 대개 엔터 키 바로 위에 있는 버튼입니다.

역슬래시 모양과 W에 가로로 줄을 그은 두가지 모양 모두 같은 기호입니다.

 

 

 


C++의 이스케이프 시퀀스

문자열 의미
\a 경보 문자
\b 백스페이스
\f 폼 피드(form feed)
\n 개행
\r 캐리지 리턴 ( carriage return )
\t 수평 탭
\v 수직 탭
\\ 백슬래시 출력
\' 작은따옴표 출력
\" 쌍따옴표 출력
\ooo 8진수 값 아스키 코드 표현
\xhh 16진수 값 아스키 코드 표현

폼 피드, 캐리지 리턴

  • 출력 장치 제어 문자
  • 폼 피드 : 한 페이지 넘겨서 출력.
  • 캐리지 리턴 : 캐리지 리턴 문자 뒷 부분만 출력.

*예시

cout << "Hello\rHi";

: 해당 코드는 Hi 를 출력합니다. 

 

  • 일정 크기(스페이스 바 4번) 만큼 띄워서 출력.

 

출력

  • 작은 따옴표, 쌍 따옴표는 사용 시에 컴파일러가 문자열의 시작이나 끝으로 인식합니다.
  • '\'도 마찬가지로 이스케이프 문자로 인식합니다. 
  • 따라서 해당 문자들을 출력하기 위해서 앞에 \를 붙여줍니다.

 

아스키코드 표현

  • \ 뒤에 3자리 단위의 8진수나 16진수의 아스키 코드 값을 넣어 해당 아스키 코드를 출력하는 방식.

아스키 코드표

*예시

cout << "아스키 코드로 02B 는 \02B";

: 해당 코드는 아스키 코드로 02B는 + 를 출력합니다. 

 

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