목록개발공부 (70)
코딩쌀롱
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Wj4CD/btqTwWpMyez/hfcEZysoaYUTpC2V0Zub0K/img.png)
문제 LeetCode 7. Reverse Integer 문제 input: 32비트 정수 output: 32비트의 범위 밖이면 0을 리턴, 범위 내면 각 숫자를 뒤집어서 리턴(양,음은 그대로) 나의 풀이 1. 수를 배열로 만들어 쪼갠다. (toString, split) 2. 순서를 반대로 뒤집는다. - 제일 앞 문자가 '-'가 아니면 : 뒤집어서 합치고 숫자로 (reverse, join, parseInt) - 제일 앞 문자가 '-'일 경우 : 제일 앞 문자를 제외하고 뒤집어서 합치고 숫자로 (splice, reverse, join, parseInt) 3. 32비트의 범위 밖이면 0을 반환 아니면 result 반환 입력값이 음수일 때 '-'를 체크하는 부분이 뭔가 찝찝했는데 json님의 풀이를 보고 답답했던..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c3BYpk/btqTqH1qv3o/kWL4fOfJY6OPnTtRlueqoK/img.png)
문제 LeetCode 1. Two Sum 문제 input: 정수로 이뤄진 nums 배열, 정수 target output: nums의 두 숫자의 합이 target일 때 두 수의 인덱스를 담은 배열 나의 풀이 배열의 원소들을 두 개씩 모두 더해줘야 해서 이중 for문을 사용했고, 두 수의 합에는 순서가 상관이 없기 때문에 중복되지 않도록 j를 i + 1부터 시작하도록 했다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ltmGT/btqTcQecQSH/AfTShWE5WG01EqRkiyK3AK/img.png)
배열과 링크드 리스트의 비교에서 싱글 링크드 리스트라는 전제 하에 작성하였습니다. 링크드 리스트(Linked List) 메모리는 데이터 조각을 저장하는 셀들의 거대한 집합 같은 형태로 이루어져 있다. 배열 - 연속된 빈 셀 그룹에 데이터를 저장 링크드 리스트 - 인접하지 않은 메모리 셀 묶음 링크드 리스트는 메모리 전체에 걸쳐 여러 셀에 퍼져 있을 수 있다. 링크드 리스트가 배열보다 나은 점 중 하나로 프로그램이 데이터를 저장하기 위해 메모리 내에 나란히 이어진 빈 셀 묶음을 찾을 필요가 없다는 것이다. 프로그램은 서로 인접하지 않은 여러 셀에 걸쳐 데이터를 저장할 수 있다. 링크드 리스트의 서로 인접하지 않은 이러한 셀을 '노드'라고 한다. 각 노드는 노드에 저장된 데이터뿐만 아니라 연결 리스트 내에 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nGN7S/btqTkgpcn1P/uflUZ6G8zuMOICkzve75p0/img.png)
점근적 표기법(Asymptotic notation) 빅 오 표기법 (big O) 시간의 상한 (최악의 시나리오) 최악의 경우에도 big O를 넘지 않는다. 빅 오메가 표기법 (big Ω) 시간의 하한 (최선의 시나리오) 아무리 빨라도 big Ω보다 빠를 수 없다. 빅 세타 표기법 (big θ) 평균적인 경우 (big O ~ big Ω) 빅 오 표기법(big O notation) 빅 오 표기법은 알고리즘 간 차이를 드러내고 주어진 상황에 알맞은 알고리즘을 결정하게 해주는 훌륭한 도구이다. 빅 오를 사용하면 내가 만든 알고리즘과 세상에 존재하는 범용 알고리즘을 비교할 기회가 생기며 "이 알고리즘이 일반적으로 쓰이는 알고리즘만큼 빠른가 혹은 느린가?"라고 자문해 볼 수 있다. 빅 오 표기법은 알고리즘에 얼마나..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TV1cW/btqSXjVkGwJ/bJ5qgzsHCXkYLD4kXQYzM0/img.png)
컴퓨터가 인터넷으로 통신하기 위해서는 IP주소가 필요하다. IPv4는 인터넷 통신규칙으로 42억개의 IP주소를 가지고 있다. 인터넷에 연결되는 컴퓨터가 엄청나게 늘어나면서 IP주소가 부족해지게 되었고 새로운 통신 규칙인 IPv6를 만들었다. 그러나 한 번에 바꾸기 어렵기 때문에 기존의 IPv4를 아껴써야 한다. 그래서 IP를 아낄 수 있고, 통신요금을 절약할 수 있는 공유기(router)가 나오게 된다. 공유기 (router) ✱WAN(wide area network, 광역 네트워크) ① 통신사와 계약된 케이블을 공유기의 WAN에 꽂음 ② 통신사 발급 IP는 공유기의 IP가 됨 (Public IP address) ✱LAN(local area network, 지역 네트워크) ① 각각의 디바이스들(스마트폰,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bPvFGT/btqS1U1kDz5/RKApVzIlGXcokqkw04vFR1/img.png)
컴퓨터를 사용해서 작업을 수행할 때 사용자가 입력한 명령이 컴퓨터 하드웨어를 제어하도록 해줘야 한다. 사용자가 명령을 입력하면 쉘이 명령을 받아 해석하고 커널에 전달하면 커널을 통해 하드웨어를 조작하는 것이다. 커널(Kernel) 컴퓨터 제일 내부에는 하드웨어가 있고, 그 하드웨어를 관리해주는 것이 운영체제(OS)이다. 이 운영체제의 핵심이 바로 커널(Kernel)이다. • 소프트웨어 - 하드웨어간의 커뮤니케이션을 관리하는 프로그램. • 입출력을 관리, 소프트웨어로의 요청을 하드웨어(CPU, 메모리, 저장장치 등)가 처리할 수 있도록 요청을 변환 • 하드웨어 관리 및 프로세스 분배 등 여러 시스템 자원 관리 •하드웨어를 직접적으로 제어하는 운영체제에서 가장 핵심 요소 커널은 주로 하드웨어 자원을 효율적으..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dAXmJb/btqSX77YbyH/KO3Bdqr9hsdNrDQJOKk5Ck/img.png)
유닉스(Unix) 1970년대 초 미국 벨 연구소의 켄 톰슨, 데니스 리치가 만든 운영체제. 장점 C언어로 만들어 다른 컴퓨터에 수정해서 적용하기 쉬움(이식성) → 다양한 버전의 Unix 탄생 → POSIX라는 Unix 표준(규격) 만듦 단점 라이센스 지금(AT&T) 처음 개발 당시에는 소스코드의 모든 부분이 공개되었고 소스코드 접근까지 가능했다. 연구소, 대학교 등에서 유닉스가 활성화되면서 많은 소스코드가 공개되어 사용되었다. 1976년에 빌게이츠가 마이크로소프트를 창업했고, 소프트웨어의 소스코드를 공개하는 것에 부정적인 시각을 제시하면서 소프트웨어가 자산화 상품이 되어야 한다고 주장했다. 1980년 초부터 상용 유닉스가 수수료를 높이기 시작했고, 공개 개념의 소프트웨어가 점점 사라져 갔다. 독점 소프..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DpP3P/btqSIYDuVch/qyVjpPuc4tMXTyQbk6mtz0/img.png)
문제 백준 1076 저항 문제 나의 풀이 각각의 색에 대한 값, 곱을 처음에는 객체로 정리하려다가 인덱스 값이 곧 값이어서 배열로 했다. 입력값의 첫 번째, 두 번째의 '값'을 문자열로 더해서 숫자를 이어서 연결해주고, 세 번째 입력값의 '곱'은 10의 '인덱스'승한 값과 같기 때문에 곱해주었다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/97QGB/btqSDtX7kcv/cPHHrvt9Ud44MFSUuaVUE0/img.png)
문제 백준 1009 분산처리 문제 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, ..., 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 반복되고, 총 데이터의 개수는 a의 b승개의 형태로 주어진다. 입력 첫 줄은 테스트 케이스의 개수 T, 그 다음 줄 부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다.( 1 ≤ a ≤ 100, 1 ≤ b < 1,000,000)데이터를 처리할 컴퓨터 번호를 출력하는 문제 나의 풀이 a의 b승 수의 일의 자리 숫자가 곧 컴퓨터 번호가 된다.(0일 때는 10) 그래서 a의 b승을 구하고 일의 자리 숫자를 반환하려고 했다. 그런데 9의 635승처럼 큰 수는 Infinity가 나온다. 그리고 성능 상으로도 좋지 않을 것 같아 수정해야 했다. 1..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/czJUxl/btqSIZacKrT/b4bfISxcxshELoM0K00fLk/img.png)
이진법(Binary): 스위치로 켜고 끄는 2가지의 전기적 상태만으로도 중요한 정보를 표현할 수 있다. - On 상태: 전류가 흐르고, true를 나타내는 상태 - Off 상태: 전류가 흐르지 않고, false를 나타내는 상태 초기의 전자 컴퓨터는 3개의 상태를 갖고 있는 3진법을 사용하거나 5진법을 사용할 수도 있었다. 이러한 진법들의 문제는, 중간 상태가 더 존재할수록 그것들을 나누기가 어려웠다는 것이다. 그래서 가능한 한 두 개의 신호를 멀리 배치하고, 단지 'on'과 'off'를 사용함으로써 가장 명확한 신호로 사용할 수 있다. 이진수를 사용하는 다른 이유 중 하나는 수학 분야에서 이미 존재했던 참과 거짓을 다룬 분야가 있었기 때문. 그 수학 분야는 참과 거짓을 조작하는 데에 필요한 규칙과 연산방..