프로그래밍 면접 이렇게 준비한다 (5)
[책리뷰 & Book review]
C에서 메모리를 어떻게 할당하는가?
malloc을 호출하는 방법
C에서 메모리를 어떻게 할당하는가? malloc을 호출하는 방법
C언어에서는 메모리 할당을 위해 malloc 함수를 사용합니다. malloc 함수는 힙 메모리 영역에 동적으로 메모리를 할당하며, 할당된 메모리의 시작 주소를 반환합니다. malloc 함수를 호출할 때는 할당하고자 하는 메모리의 크기를 바이트 단위로 전달하게 됩니다. 예를 들어, int형 변수 10개의 공간을 할당하고 싶다면, 'malloc(10 * sizeof(int))'와 같이 사용하게 됩니다. 이렇게 할당된 메모리는 free 함수를 통해 반드시 해제해주어야 합니다.
```c
#include <stdlib.h>
int main() {
int* ptr = (int*) malloc(sizeof(int));
*ptr = 10;
printf("%d\n", *ptr);
free(ptr);
return 0;
}
```
재귀 호출이 나쁜 이유는 무엇인가?
재귀 호출이 나쁜 이유는 무엇인가?
재귀 호출은 함수가 자신을 다시 호출하는 것을 의미합니다.
이는 코드를 간단하게 만들 수 있지만, 잘못 사용하면 스택 오버플로우를 일으키거나 비효율적인 코드를 생성할 수 있습니다. 재귀 호출은 각 호출마다 스택에 새로운 프레임을 추가하는데, 이는 메모리를 많이 사용하게 됩니다. 따라서 재귀 호출의 깊이가 너무 깊어지면 스택 오버플로우가 발생할 수 있습니다. 또한, 재귀 호출은 반복문보다 일반적으로 더 많은 연산을 필요로 하므로, 비효율적일 수 있습니다.
재귀 호출은 함수가 자기 자신을 호출하는 것을 말합니다.
재귀 호출은 프로그램의 코드를 간결하고 이해하기 쉽게 만들 수 있지만, 재귀 호출을 너무 많이 사용하면 스택 오버플로가 발생할 수 있습니다. 스택 오버플로는 스택 메모리가 부족하여 프로그램이 실행을 계속할 수 없는 상태를 말합니다.
재귀 호출을 사용할 때는 다음과 같은 점에 주의해야 합니다.
* 재귀 호출의 깊이가 너무 깊지 않도록 해야 합니다.
* 재귀 호출을 사용할 때는 반드시 종료 조건을 명시해야 합니다.
* 재귀 호출을 사용할 때는 스택 메모리 사용량을 주의깊게 모니터링해야 합니다.
모바일 기기와 컴퓨터용 프로그래밍은 어떻게 다른가?
모바일은 손가락이 다루기 쉬운것이고
모바일 기기와 컴퓨터용 프로그래밍은 어떻게 다른가? 모바일은 손가락이 다루기 쉬운것이고
모바일 기기와 컴퓨터용 프로그래밍은 여러 면에서 다릅니다. 먼저, 유저 인터페이스가 다릅니다. 모바일은 터치스크린을 이용하므로, 손가락으로 쉽게 다룰 수 있는 UI를 설계해야 합니다. 또한, 모바일 기기는 일반적으로 컴퓨터보다 성능이 낮으므로, 더 효율적인 코드를 작성해야 합니다. 또한, 모바일 앱은 배터리 소모를 최소화해야 하므로, 이를 고려한 프로그래밍이 필요합니다.
* **입력 방법:** 모바일 기기는 터치스크린을 사용하여 입력을 받고, 컴퓨터는 키보드와 마우스를 사용하여 입력을 받습니다.
* **화면 크기:** 모바일 기기의 화면은 컴퓨터의 화면보다 작습니다.
* **처리 능력:** 모바일 기기의 처리 능력은 컴퓨터의 처리 능력보다 낮습니다.
* **배터리:** 모바일 기기는 배터리를 사용하여 전원을 공급받고, 컴퓨터는 전원 콘센트를 사용하여 전원을 공급받습니다.
FizzBUzz 방식과
'문자열 뒤집기'에서 라이브러리를 함수를 쓰지 않고
문자열을 뒤집는 함수를 만들어라
FizzBUzz 방식과 '문자열 뒤집기'에서 라이브러리를 함수를 쓰지 않고 문자열을 뒤집는 함수를 만들어라
FizzBuzz는 3으로 나누어 떨어지면 'Fizz', 5로 나누어 떨어지면 'Buzz', 3과 5로 모두 나누어 떨어지면 'FizzBuzz'를 출력하는 간단한 프로그래밍 문제입니다. 이는 반복문과 조건문을 사용하여 해결할 수 있습니다.
문자열 뒤집기는 라이브러리 함수를 사용하지 않고 해결하는 문제입니다. 이를 해결하는 한 가지 방법은 두 개의 포인터를 사용하는 것입니다. 하나는 문자열의 시작을 가리키고, 다른 하나는 끝을 가리키며, 두 포인터가 서로를 향해 한 칸씩 움직이면서 가리키는 문자를 교환하는 방법입니다.
def reverse_string(s):
"""문자열을 뒤집는 함수입니다."""
r = ""
for i in range(len(s) - 1, -1, -1):
r += s[i]
return r
중복 삭제
정렬되지 않은 정수 리스트가 주어졌을때 모든 중복된 값을 제거한 새로운 리스트를 리턴하는 함수를 함들어라
중복 삭제 정렬되지 않은 정수 리스트가 주어졌을때 모든 중복된 값을 제거한 새로운 리스트를 리턴하는 함수를 함들어라
정렬되지 않은 정수 리스트에서 중복 값을 제거하는 함수는 다양한 방법으로 구현할 수 있습니다. 한 가지 방법은 해시 테이블을 사용하는 것입니다. 해시 테이블에 각 숫자를 추가하면서, 이미 테이블에 존재하는 숫자는 무시하는 방법입니다. 이렇게 하면 중복된 값이 제거된 새로운 리스트를 생성할 수 있습니다.
def remove_duplicates(nums):
"""중복된 값을 제거한 새로운 리스트를 리턴하는 함수입니다."""
result = []
for num in nums:
if num not in result:
result.append(num)
return result
집합에서는 중복ㄹ된 값을 허용하지 않기때문에
리스트를 집한으로 변환하면 훨씬 더 간결하고 효율적으로 목적을 달성할수있다
집합에서는 중복된 값을 허용하지 않기때문에 리스트를 집합으로 변환하면 훨씬 더 간결하고 효율적으로 목적을 달성할수있다
파이썬 등의 언어에서는 집합(set)이라는 자료형을 제공합니다. 이는 중복된 값을 허용하지 않으므로, 리스트에서 중복을 제거하는 데 유용합니다. 리스트를 집합으로 변환하면, 자동으로 중복된 값이 제거됩니다. 이렇게 하면 코드가 간결해지고, 실행 시간도 줄어들어 효율적입니다. 하지만, 이 방법은 원래 리스트의 순서를 유지하지 않는다는 점을 주의해야 합니다.
nums = [1, 2, 3, 4, 5, 1, 2, 3]
nums = list(set(nums))
print(nums) # Output: [1, 2, 3, 4, 5]
'컴퓨터공부 > 책리뷰 & book review' 카테고리의 다른 글
프로그래밍 면접 이렇게 준비한다 (7) [책리뷰 & Book review] (1) | 2024.01.04 |
---|---|
프로그래밍 면접 이렇게 준비한다 (6) [책리뷰 & Book review] (2) | 2024.01.04 |
프로그래밍 면접 이렇게 준비한다 (4) [책리뷰 & Book review] (1) | 2024.01.03 |
프로그래밍 면접 준비 이렇게 준비한다 (3)[책리뷰 & Book review] (0) | 2024.01.03 |
댓글