본문 바로가기

Language

(107)
[C++] <random> 라이브러리 (난수 생성) C 스타일의 난수 생성의 문제점 아래는 C 스타일로 0부터 99까지의 난수를 생성하는 코드이다. #include #include #include int main(){ srand(time(NULL)); for(int i = 0; i < 5; i++){ print("난수 : %d \n", rand() % 100); } return 0; } 위 코드는 진짜 난수를 생성하는 것이 아니라 마치 난수처럼 보이는 의사 난수(pseudo random number)을 생성하는 코드이다. 첫 번째 수만 무작위로 정하고, 나머지 수들은 그 수를 기반으로 여러가지 수학적 방법을 통해서 난수처럼 보이지만 실제로는 무작위로 생성된 것이 아닌 수열들을 만들어내게 된다. 무작위로 정해진 첫 번째 수를 시드(seed)라고 부르는데, ..
[C++] <string> 라이브러리 C++에서 문자열을 다룰 수 있는 두 가지 방법 - C-string C언어에서 사용해오던 문자열로, '/0'으로 끝나는 char 타입의 배열을 취급하는 방법이다. char s[100]; scanf("%s", s); - string 클래스 C++ 표준 라이브러리에서 제공하는 클래스로 문자열의 끝에 '/0' 문자가 들어가지 않으며, 문자열의 크기를 동적으로 변경 가능하다. string str = ""; getline(cin, str); cout n; cin.ignore(); getline(cin, str); cin.ingore()가 입력 버퍼의 모든 내용을 제거해주어 getline()이 정상적으로 동작할 수 있다. string 클래스 생성 먼저 헤더 파일을 추가해주어야 한다. #include string을 ..
[Python] 문자열 함수 문자열 자료형은 자체적으로 함수를 가지고 있다. -> 문자열 내장 함수 사용 형식 : 문자열.함수명() count() - 문자 개수 세기 해당 문자가 몇 번 있는지 세어 반환 >>> a = "hobby" >>> a.count('b') 2 find() - 위치 알려주기 문자열에서 찾는 문자가 처음으로 나온 위치를 반환 찾는 문자가 존재하지 않으면 -1을 반환 >>> a = "Python is the best choice" >>> a.find('b') 14 >>> a.find('k') -1 index() - 위치 알려주기 문자열에서 찾는 문자가 처음으로 나온 위치를 반환 찾는 문자가 존재하지 않으면 에러 발생 >>> a = "Python is the best choice" >>> a.index('b') 14..
[Python] 문자열 (연산하기, 인덱싱과 슬라이싱, 포맷팅) 문자열 문자열: 문자, 단어 등으로 구성된 문자들의 집합 문자열은 따옴표로 둘러싸여져 있음 "a" "123" "Life is too short, You need Python" 문자열 자료형 만드는 4가지 방법 - 큰따옴표(")로 양쪽 둘러싸기 - 작은따옴표(')로 양쪽 둘러싸기 - 큰따옴표 3개를 연속(""")으로 써서 양쪽 둘러싸기 - 작은따옴표 3개를 연속(''')으로 써서 양쪽 둘러싸기 문자열에 따옴표 포함시키기 - 문자열에 작은따옴표(') 포함시키기 -> 문자열을 큰따옴표로(") >>> food = "Python's favorite food is perl" - 역슬래시(\)를 사용해서 작은따옴표(')와 큰따옴표(")를 문자열에 포함시키기 >>> food = 'Python\'s favorite fo..
[Java] Input/Output 정리 System.out System.out.println(); System.out.println("%d", n); - 실수형, 문자형 자료 출력 가능 Scanner next[자료형]으로 입력받을 수 있음 hasNext[자료형]을 이용해서 입력받을 수 있는 자료형이 있는지 구할 수 있음 두 수 입력 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a, b; a = scanner.nextInt(); b = scanner.nextInt(); System.out.println(a + b); } } 입력에서 정수가 주어지는 동안 계속 입력 받음 public class Main..
[C++] OOP - 생성자와 소멸자 생성자 생성자는 객체 생성 시 자동으로 호출되면서 객체를 초기화 해주는 함수이다. Date 클래스의 day 객체를 만들면 생성자 Day(int year, int month, int day)가 호출된다. 따라서 Date의 객체를 생성할 때 생성자의 인자 year, month, day에 각각 2011, 3, 1을 전달하며 객체를 생성하게 되는 것이다. Date day(2021, 7, 9); // 암시적 방법 (implicit) Date day = Date(2021, 7, 9); // 명시적 방법 (explicit) 함수를 호출하듯이 사용하는 것이 암시적 방법, 명시적으로 생성자를 호출한다는 것을 보여주는 것이 명시적 방법인데 많은 경우 암시적 방법으로 축약해서 쓸 수 있으므로 이를 선호하는 편이다. 디폴트 ..
[C++] 공용체, 열거체 공용체 (union) 공용체는 구조체와 달리 메모리를 공유한다. 공용체들의 각 멤버들의 시작 주소는 모두 동일하다. 가장 큰 멤버 변수의 크기로 메모리를 할당받아 같은 공간에 자리잡기 때문에 한 번에 하나의 멤버 변수만 사용할 수 있다. 따라서 메모리의 크기가 제한되어 있거나 메모리를 절약하고 싶을 때 유용하지만 하나의 데이터 사용 후 데이터를 변경할 경우 원래의 데이터를 잃어버린다는 단점이 존재한다. 위 그림의 union A의 경우 j의 값을 변경함으로써 i의 값을 변경할 수 있고 i의 값을 변경함으로써 j의 값을 변경할 수 있게 된다. 공용체 A의 멤버 변수 a에만 67이란 값을 저장하고 a, b, c를 출력하면 모두 각자 선언된 데이터 타입으로 변형되어 출력된다. 열거형 (Enum) 프로그래밍을 하..
[C++] 구조체 배열 원소의 타입은 모두 동일해야 한다. 하나의 배열에서 어떤 원소는 char이고 어떤 원소는 int 일 수 없다. C++에서는 배열로 해결하지 못하는 문제를 구조체를 이용하여 해결할 수 있다. 원소의 크기가 제각각인 배열을 만드는 것이다. 배열에서는 배열의 타입만으로 모든 원소의 타입을 알 수 있었지만 구조체는 그렇지 않기 때문에 정의할 때 모든 원소의 타입을 명시해 주어야 한다. struct 구조체이름 { 멤버들..예를 들면 char str[10]; int i; }; /* 마지막에 꼭 ;를 붙인다. */ Human이라는 이름의 구조체는 3개의 멤버(int age, int height, int weight)를 가지고 있다. main 함수 내에서 Human이라는 구조체의 구조체 변수 Psi를 정의하였다...