[LeetCode] Symmetric Tree
2022. 5. 5. 15:48
Programming/알고리즘
https://leetcode.com/problems/symmetric-tree/ Symmetric Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 더보기 해설 Tree가 Symmetric 즉 대칭적인지 판단하면 된다. 이 문제는 두가지 방법으로 풀 수 있다. 1. recursive한 방법 2. iterative 한 방법 1. recursive한 방법 트리가 대칭적이려면 다음과 같은 조건이 필요하다 2번 혹은 3번 하나만 존재시 대칭이 아니다. ..
[CPP] 1. CPP의 법 따르기
2022. 1. 24. 23:22
Programming/C++
1. CPP를 언어들의 연합체로 바라보는 안목이 필요하다 CPP의 구성요소 1.C 2.객체 지향 개념의 C++ 3.템플릿 C++ 4.STL 2. #define을 쓰려거든 const, enum, inline을 떠올리자 즉 선행처리자보다 컴파일러를 더 가까이하자 ! #define BREAD_NUMBER 4 라고 정의햇을 경우 컴파일러는 BREAD_NUMBER라는 기호를 모른다( 컴파일러에게 넘어가기전에 선행처리자가 밀어버리고 상수로 바꾸기 때문) 고로 에러메시지에 BREAD_NUMBER보다는, 4로 나오는 상황이다(0이나 1이라면 에러났을때 곤란해,, ) 이 숫자를 찾아들어가기 힘들기 때문에 이렇게 #define으로 선언하는것보다 상수를 쓰는것이 바람직하다. const int BreadNumber=4; 단,..
[CPP] c++ 용어 정리
2022. 1. 24. 22:56
Programming/C++
선언(declaration) 코드에 사용되는 '어떤 대상'의 이름과 타입을 컴파일러에게 알려주는 것 선언문에는 시그니처,즉 그 함수의 매개변수 리스트와 반환타입이 나와있다. 정의(definiton) 선언에서 빠진 구체적인 세부사항을 컴파일러에 제공하는 것 객체의 경우에 있어서 정의는 컴파일러가 그 객체에 대한 메모리를 마련해놓는 부분 초기화(initialization) 어떤 객체에 최초의 값을 부여하는것 기본생성자(default constructor) 어떤 인자도 주어지지 않은 채로 호출될 수 있는 생성자 생성자가 explicit로 선언되어있을 경우 암시적인 변환 타입을 수행하는데 쓰이지 않는다. 예를 들면 다음과 같다. Class B{ public : expllicit B(int x =0, bool b..
[WINDOWS] 스레드
2021. 6. 11. 01:38
Programming/Windows
스레드가 가지고 있는 정보들 CPU레지스터 정보(=컨텍스트) 현재 모드 스택 개인 저장 영역 임의의 보안 토큰 메시지 큐 메시지 큐를 이용해 윈도우나 스레드를 생성하고 관리할 수 잇다. 스레드 우선순위 스레드 상태 정보 스레드 관련 API 스레드 생성 CreateThread 스레드 일시중지 / 재개 SuspendThread ResumeThread 스레드 종료 ExitThread Terminate Thread 1.스레드 스택 스레드는 2개의 스택을 가지고 있다. 커널모드에서 사용하는 물리메모리 스택 32비트에서는 12kb, 64비트에서는 24kb 유저모드에서 사용하는 스택 기본 1mb로 예약되고 공간이 더필요할 때 4kb씩 증가되어 커밋되며, 기본크기는 64kb로 생김 linker를 이용하여 기본 크기 지..
[WINDOWS] 프로세스
2021. 6. 9. 23:55
Programming/Windows
프로세스 운영체제 입장에서 실행되는 하나의 작업 실제 커널객체로 생성되어 위치함 프로세스가 소유하는 정보 개인 가상 메모리 영역 메모리 크기는 32비트 프로세스에서 최대 4GB , 64비트에서 최대 16GB 개인 물리 메모리 영역 보안토큰 공유자원을 Access할 때 사용 핸들 테이블 스레드 우선 순위 메모리 주소 현재 프로세스가 사용하는 메모리 주소 프로세스 사용 용도에 따른 구분 시스템 프로세스 운영체제에서 생성하고 반드시 존재해야하는 프로세스 네이티브 API사용 WinLogon 이나 세션매니저(SMSS) 등 서비스 프로세스 Win32 Services에 의지하여 서비스 형태로 실행되는 프로세스 응용 프로그램(사용자 프로그램) 유저모드에서 실행되는 프로그램 환경 서브시스템 프로그램의 실행 환경에 맞게 ..
[WINDOWS] 윈도우 기본 개념 (2)
2021. 6. 9. 02:06
Programming/Windows
이전 게시글에서 1~5번 개념까지 설명하였다. 해당 게시글에서 소개할 개념은 다음과 같다. 6. 멀티프로세싱 7. 유니코드 8. 서브시스템 9. 세션 6. 멀티 프로세싱 SMP 윈도우는 다수의 프로세서가 하나의 메모리영역과 하드웨어 자원을 공유해서 사용하는 SMP(Symmetric multiprocessing)을 지원한다. 이는 리눅스와 같은 대부분의 시스템이 지원하는 시스템구조이다. CPU입장에서 데이터가 어느 위치에 있던 각 프로세스가 동일하게 접근할 수 있고, 작업스케줄링을 통해 효율적으로 프로세스를 이용할 수 있게한다. win10기준 256개의 논리 프로세서까지 지원한다. windows 버전별로 지원하는 물리적 프로세서(CPU) 개수를 제한 하고 있다. 자료는 구글링 하길 바란다. 7. 유니코드 ..
[WINDOWS] 윈도우 기본 개념 (1)
2021. 6. 9. 01:35
Programming/Windows
WINDOWS 프로그래밍을 위해 꼭 필요한 개념은 다음과 같다. 1. 유저모드와 커널모드 2. 프로세스 3. 스레드 4. 가상메모리 5. 객체와 핸들 6. 멀티프로세싱 7. 유니코드 8. 서브시스템 9. 세션 1. 유저 모드와 커널 모드 유저모드 운영체제의 시스템 영역을 제외한 데이터 영역에 접근 가능 하드웨어 액세스 불가 유저 모드에서 실행되는 개별 프로그램으로 인한 시스템 동작 불가 오류를 막는다. 커널모드 커널과 디바이스 드라이버들만 사용 모든 시스템 자원에 대해 접근 가능 오류 발생시 컴퓨터 뻑날수 있음..^^ Ring 권한을 의미하는 용어 Ring 0 : 커널 모드 Ring 3 : 주로 유저모드에게는 해당 권한 부여 2. 프로세스 하나의 프로그램을 실행하기 위한 자원의 집합 프로그램을 실행하면 ..
[프로그래머스] 타겟 넘버
2021. 3. 22. 22:33
Programming/알고리즘
programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 문제 설명 이 문제는 그래프로 접근 할 수 있다. DFS또는 BFS를 활용하면 된다 (DFS가 더 빠르다) 해당 코드는 DFS로 풀었다 코드 구현 python3 으로 풀었다. 더보기 answer =0 def dfs(index, numbers, sum, target): global answer n=len(numbers) #끝..