Programming 17

[c 언어] 포인터와 call by address : 실제 값에 영향 있는 경우와 없는 경우!

1. *a는 int형 정수 "aa = 1"을 참조, *b는 int형 정수 "bb = 2"를 참조 2. (&aa, &bb)로 주소를 매개변수로 전달 (1, 2의 주소 값) 3. 주소 값을 swap했지만 main에서 swap이 이루어지지 않음 -> 주소로 전달하고 주소 swap을 했지만, 복사된 인자들이 참조하는 주소를 swap해서 실제로 swap이 이루어지지 않음 1. 문자열을 가리키는 *a, *b 2. 참조하는 문자열의 주소가 아닌, a, b의 주소를 매개변수로 전달 3. 복사된 새로운 *a, *b는 main에서의 a, b 주소가 가리키는 문자열 swap 4. 함수 종료 후 main 함수에서는 a, b가 가리키는 문자열이 swap 됨 전달되는 매개변수는 값을 복사해서 쓰이기 때문에 새로운 변수임을 잊지 ..

Programming/C & C++ 2021.03.27

[C언어] 포인터 문자열 VS 배열 문자열 (같지 않다!)

포인터를 이용한 문자열은 "리터럴 문자열"로 내용 수정이 불가능 하지만 주소값 변경을 이용한 값 변경은 가능하다 배열을 이용한 문자열은 내용 수정이 가능 배열의 주소값 변경이 불가능하다 (arr++ 가 불가능) 아래 예시 참고 #include void func(char *str, char *arr) { printf("%c\n", *str);// str[0]문자 'p' 출력 printf("%s\n", str);// str 문자열 "pointer" 출력 printf("%s\n", arr);// arr 문자열 "array" 출력 //str[0] = 'P'; 포인터 문자열 = 리터럴 문자열 = 문자 값 수정 X arr[0] = 'A';// 배열 arr[0] = 'A' 로 값 수정 ("Array") printf(..

Programming/C & C++ 2021.02.25

[C#] 입출력과 데이터

1. 입출력 - 입력 : Console.ReadLine(); // "문자열"로 입력됨 - 한 줄 출력 : Console.WriteLine("한 줄 출력"); - 출력 : Console.Write("줄 바꿈 없이 출력"); 2. 데이터 - var : 선언시 초기화 필수 - '?' : nullable, null 값 저장 가능한 데이터 ( ex. int? a = 1; ) - const : 불변 변수 이용할 경우 사용, 변수명 대문자로 설정하기 (ex. const int MIN = 0; // 최소값) - object : 다양한 데이터로 저장 가능 - int, float, double, decimal, char, bool 등 존재 3. 문자열 수 : ToString(), Parse, Convert - 문자열로 바..

Programming/C & C++ 2020.10.07

[백준/c++] 1181번 : 단어 정렬

www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net #include #include using namespace std; int main() { int n, index; cin >> n; vector str(n), res; for (int i = 0; i > str[i]; } // 벡터 안에 string 길이 순서대로 정렬 while (!str.empty()) { index = 0; str[in..

[C++] c++ 시작하기 : cout, cin, namespace, 오버로딩

1. cout, cin : 입출력하기 #include int main() { std::cout > name >> age; 와 동일 return 0; } #include 은 헤더로 input output stream 입출력을 의미한다. main함수에서 std 는 namespace로 아래에 추가 설명을 하겠다. :: 은 범위 지정 연산자로 namespace를 가리킬때 사용하는 연산자이다. cout은 console output으로 출력을 의미하고, cin은 console input으로 입력을 받게한다. 2. namespace과 using #include namespace A { void Add() { printf("A의 Add() 호출\n"); } void Minus() { printf("A의 Minus() ..

Programming/C & C++ 2020.05.18

[Python] 5장 재귀와 반복 : 정렬 (Sorting)

1. 선택 정렬 (Selection sort) 재귀 버전 def selectionSort(xs): if xs != []: smallest = min(xs) xs.remove(smallest) return [smallest] + selectionSort(xs) else: return [] 꼬리재귀 버전 def selectionSort(xs): def loop(xs, ss): if xs != []: smallest = min(xs) xs.remove(smallest) return loop(xs, [smallest] + ss) #ss.append(smallest) return loop(xs,ss) else: return ss return loop(xs, []) while 루프 버전 def selectionSo..

[Python] 4장 재귀와 반복 : 자연수 계산

1. 재귀함수 vs 꼬리재귀 재귀 (recursive) 함수 꼬리 재귀 (tail recursion) 함수 계산한 결과에다 더할 수를 기억 -> 재귀 호출의 횟수만큼 저장 공간을 사용 더 이상 기억해둘 것이 없음 (답을 누적) -> 공간이 필요 없음 (공간 절약) return n + sima(n-1) 이용 return loop(counter, accumulator) 이용 +) 지역함수를 이용한 캡슐화의 장점은 ?? 2. 재귀 함수 vs while 루프 재귀 함수 while 루프 하향식 (Top-down) 상향식 (Bottom-up) 실행 논리를 직관적으로 표현 가능 BUT, 공간 효율이 떨어짐 꼬리 재귀 or while 루프같은 상향식은 공간 절약 가능 3. 재귀 vs 꼬리 재귀 vs while 루프 실..

[Python] 3장 제어구조

1. 단축 계산 (short-circuit evaluation) 수식은 이항 연산을 할 때 양쪽 피연산자의 계산 결과가 모두 있어야 계산 진행 가능하다. 그러나 논리식 계산은 왼쪽 피연산자의 계산 결과에 따라서 오른쪽 피연산자의 계산을 생략 가능하다. 즉, 왼쪽 피연산자의 계산 결과만으로 전체 계산 결과가 명백해지면, 결과에 영향을 받지 않는 오른쪽 피연산자 계산은 생략한다. - and 연산 : False and ( ) -> 오른쪽 피연산자 계산 생략, 결과 False - or 연산 : True or ( ) -> 오른쪽 피연산자 계산 생략, 결과 True ex ) 무한 loop() 를 이용한 단축 계산 확인 - def loop() : loop() #자기 자신을 호출하는 함수로, 원칙적으로는 프로그램이 영..