분류 전체보기 <128>
초등학생 때 많이 풀었던 시침과 분침의 각도 구하기를 해보자. 제약조건은 시침과 분침 사이의 각도 중에 더 작은 각을 return 하는 것이다. class Solution { public: double angleClock(int hour, int minutes) { auto hourHand = hour * 30 + minutes * 0.5; auto minuteHand = minutes * 6; auto diff = abs(hourHand - minuteHand); return min(diff, 360 - diff); } }; 시침(hour hand)은 1시간에 30도 + 1분에 0.5도씩 움직인다. 분침(minute hand)은 1분에 6도씩 움직인다. 시침과 분침의 각도를 구한 다음에 차이 값 중 작..
두 개의 이진트리가 주어졌을 때 같은 트리인지 확인하는 코드 작성하기 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool isSame..
malloc 1. 메모리 공간 할당 new 1. 메모리 공간 할당 2. 생성자의 호출(초기화) 3. 반환된 주소 값을 할당하고자 하는 자료형에 맞게 형 변환
가비지 컬렉터 C#은 managed language이다. 즉 메모리가 관리되는 언어라는 것이다. 이 메모리를 관리하기 위해 CLR안에는 가비지 컬렉터라는 게 존재한다. 하지만. 가비지 컬렉터도 CPU와 메모리 같은 컴퓨팅 자원을 소모한다. 가비지 컬렉터가 자원을 최소한으로 사용하게 만들기 위해서는 프로그래머가 가비지 컬렉터가 어떻게 동작하는지를 알고 있어야 한다. (C#으로 Unmanaged Code를 작성하고 싶다면 unsafe 키워드를 사용하면 된다.) C#은 실행파일을 실행하면 이 프로그램을 위한 일정 크기의 힙 메모리를 확보한다. 객체를 할당하면 메모리 포인터가 움직여서 다음 객체를 할당할 곳을 가리키게 된다. 할당된 메모리의 위치를 참조하는 객체를 Root라고 함. . NET 애플리케이션이 실행..
은닉성과 편의성 두 마리 토끼를 잡을 수 있다? 보통은 private 필드; public Get필드() { return 필드; } public Set필드(value) { 필드 = value; } private로 설정한 필드지만 Get, Set 메서드를 통해 외부에서 접근 가능하다. 프로퍼티는? 접근한정자 데이터형식 프로퍼티이름 { get { return 필드이름; } set { 필드이름 = value; } } public string Name { get; set;} public string Age {get;} 흠.. 더 우아한 방식이라고는 하는데 여튼 set 하려면 public이니 은닉은 아니지 않나?.. 편의성이 좀 좋아진 건 인정
* 인터페이스(interface) 메서드, 이벤트, 인덱서(인덱스를 이용해서 객체 내의 데이터에 접근하게 해주는 프로퍼티), 프로퍼티만 가질 수 있다. (구현을 가질 수 없다.) 클래스, 인터페이스에서 상속 가능함 여러 개의 인터페이스 한꺼번에 상속 가능 * 추상 클래스 (abstract class) 구현을 가질 수 있으나 일반 클래스와 달리 인스턴스를 가질 수 없다. 여러 개의 클래스를 한꺼번에 상속할 수 없음 (죽음의 다이아몬드 문제) - up-casting 때문에 할아버지 클래스를 두 개의 파생 클래스가 상속하고, 이 두 개의 파생 클래스를 하나의 자식 클래스가 상속하게 될 경우 모호해진다.