목록분류 전체보기 (770)
컴공생의 다이어리
생성된 총 클래스의 객체의 수를 세기 위한 방법에는 2가지가 있다. 첫번째는 어떠한 배열에 객체를 보관해놓고, 생성된 객체의 수를 모두 세는 것이다. 두번째는 어떤 변수를 만들어서 객체 생성시에 1을 더하고, 소멸시에 1을 빼는 것이다. 첫번째 방법의 경우 vector라는 자료를 사용하면 쉽게 할 수 있다. 두번째의 경우 전역 변수를 사용하거나 static 멤버 변수를 사용해 해결할 수 있다. 어떤 변수를 만들어서 객체 생성시에 1을 더하고, 소멸시에 1을 빼는 것을 전역 변수를 통해 관리하면, 프로젝트의 크기가 커질 수록 프로그래머의 실수로 인해 서로 겹쳐서 오류가 날 가능성이 다분하다. 따라서 전역 변수 같지만 클래스 하나에만 종속되는 변수인 static 멤버변수를 사용하는 것이 좋다. static ..
C++에는 C에서 쓸 수 없는 함수의 오버로딩이 가능하다. c언어에서는 하나의 이름을 가지는 함수는 딱 1개만 존재할 수 있다. 하지만 c++에서는 같은 이름을 가진 함수가 여러개 존재할 수 있다. 아래과 같이 같은 이름의 함수를 호출했을 때 함수를 어떻게 해서 구분을 할까? 그 방법은 바로 함수를 호출 하였을 때 사용하는 인자를 보고 결정하는 것이다. #include void print(int x) { std::cout
현민이는 게임캐릭터가 맵 안에서 움직이는 시스템을 개발중이다. 캐릭터가 있는 장소는 1 * 1 크기의 정사각형으로 이뤄진 N * M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한 곳을 바라본다. 맵의 각칸은 (A, B)로 나타낼 수 있고, A는 북쪽으로부터 떨어진 칸의 갯수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는 상하좌우로 움직일 수 있고, 바다로 되어 있는 공간에는 갈 수 없다. 캐릭터의 움직임을 설정하기 위해 정해놓은 매뉴얼은 이러하다. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향(반시계 방향으로 90도 회전한 방향)부터 차례대로 갈 곳을 정한다. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면, 왼쪽 방향으로 회전한 다음 왼쪽으로 한 칸을..
행복왕국의 왕실정원은 체스판과 같은 8 * 8좌표 평면이다. 왕실 정원의 특저안 한 칸에 나이트가 서있다. 나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다. 나이트는 말을 타고 있기 때문에 이동을 할때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다. 나이트는 특정한 위취에서 다음과 같은 2가지 경우로 이동할 수 있다. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 질문 이처럼 8 * 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하시오. 코드로 구현 아래는 파이썬으로 구현한 코드이다. cur=input() row=int(cur[1]) column=int(ord..
질문 정수N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오, 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다. 구현한 코드 아래는 파이썬으로 구현한 코드이다. N=int(input()) count=0 for h in range(N+1): for m in range(60): for s in range(60): if '3' in str(h)+str(m)+str(s): count+=1 print(count) 아래는 c/c++으로 구현한 코드이다. #include #include int main() { int N; int count = 0; std::cin >> N; f..
여행가 A는 N * N 크기의 정사각형 공간 위에 서있다. 이공간은 1 * 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1, 1)이며 가장 오른 쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하 ,좌 ,우 방향으로 이동할 수 있으며 시작좌표는 항상(1, 1)이다. 우리앞에는 여행가가 A가 이동할 계획서가 놓여있다. 계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D중 하나의 문자가 반복적으로 적혀 있다. 각 문자의 의미는 다음과 같다. L : 왼쪽으로 한 칸 이동 R : 오른쪽으로 한 칸 이동 U : 위로 한 칸 이동 D : 아래로 한 칸 이동 이때 여행가 A가 N * N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다. 예를 들어 (1, 1) 의 위치에서..
abs abs(x)는 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 돌려주는 함수이다. print(abs(-3)) 더보기 3 all all(x)는 반복 가능한 자료형 x를 입력 인수로 받으며 이 x가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다. print(all([1,2,3])) print(all([1,2,3,0])) 더보기 True False cf) 반복 가능한 자료형이란 for문으로 그 값을 출력할 수 있는 것을 의미한다. 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있다. any any(x)는 x 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False를 돌려준다. all(x)의 반대이다. print(any([1,2,3,0])) print(any..
문자 개수 세기(count) a="python pro" print(a.count('p')) 더보기 2 위치 알려주기 방법1: find함수 사용 a="python pro" print(a.find('y')) print(a.find('a')) 더보기 1 -1 방법2: index함수 사용 a="python pro" print(a.index('y')) 더보기 1 find함수와 index함수의 차이는 문자열 안에 존재하지 않는 문자를 찾을 때이다. 이 경우 find 함수는 -1을 반환하지만, index 함수는 에러가 발생한다. 문자열 삽입(join) print(",".join("abcd")) 더보기 a,b,c,d 소문자를 대문자로 바꾸기(upper) a="hi" print(a.upper()) 더보기 HI 대문자를 ..
문자열 포맷 코드로는 아래와 같은 것들이 있다. 코드 설명 %s 문자열(String) %c 문자 1개(Character) %d (Integer) %f (Floating-point) %o 8진수 %x 16진수 %% Literal %(문자 '%' 자체) wikidocs.net/book/1 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net
이스케이프 코드란 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 '문자 조합'이다. 주로 출력물을 보기 좋게 정렬하는 용도로 사용한다. 코드 설명 \n 문자열 안에서 줄을 바꿀 때 사용 \t 문자열 사이에 탭 간격을 줄 때 사용 \\ 문자 \를 그대로 표현할 때 사용 \' 작은따옴표(')를 그대로 표현할 때 사용 \" 큰따옴표(")를 그대로 표현할 때 사용 \r 캐리지 리턴(줄 바꿈 문자, 현재 커서를 다음 줄로 이동) \f 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동) \a 벨 소리(출력할 때 PC 스피커에서 '삑' 소리가 난다. \b 백스페이스 \000 널문자 wikidocs.net/book/1 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net