전체 글56 메모장 보호되어 있는 글 입니다. 2025. 5. 21. OSI 3계층의 기능과 역할(IP 통신) 3계층은 다른 네트워크 대역을 연결하는 역할을한다-LAN 과 LAN 을 이어주는 역할(스위치같은 3계층 장비가 필요하다) 원거리 통신을 위해서는 MAC 주소 뿐만아니라 ip 주소가 필요하다또한 서브넷 마스크, 게이트웨이가 같이 필요하다.3계층 프로토콜 종류ARP 프로토콜IPv4 프로토콜ICMP 프로토콜IP 주소클래스 기준으로 ip를 나눠서 2025. 5. 14. 근거리 네트워크 통신 osi 2계층에서 하는일--같은 네트워크 상에서 송신장비와 수신장비에 대한 데이터를 전달하는 역할- 추가적으로 오류제어, 흐름제어를 수행함 2계층은 같은 네트워크만 가능하기 떄문에다른네트워크 대역 통신을 위해서는 3계층이 필요하다 2계층에서 사용하는 주소-Mac 주소(물리주소)16진수로 구성되어있으며 12자리앞6자리 oui 제조회사 식별 id뒤 6자리 제조사 식별번호2계층의 프로토콜 이더넷 프로토콜의 구조목적지주소- 받는주소 6바이트 출발지주소- 보내는 주소 6바이트 이더넷타입- 데이터 타입에 따라 값이 정해짐데이터-데이터 파트 2025. 5. 8. gitignore 적용이 안되는 문제 상황프로젝트에서 yaml, yml 파일 데이터를 등록하지 않기 위해 gitignore 에 *.yaml*.yml를 올렸지만 바로 반영되지 않음 원인.gitignore 에 바로 반영되지않은 이유는 생성 당시 정보가 캐시가 존재하기 때문. 해결git rm -r --cached .캐시를 삭제해준다.git add .git commit -m "cache"캐시를 삭제한 후에는 add 명령어를 수행해준다 2025. 1. 21. 알고리즘 Contains 시간복잡도에 대한 정보 HashMap/ArrayList 알고리즘중 값을 배열에 저장하는 로직에서 값의 존재여부를 조회할때 ArrayList 의 contain 를 사용하게 되면 collection 매서드의 동작에서 ArrayList 의 길이 n 만큼 O(n) 만큼 순회하게된다. 이런 케이스는 많은 시간복잡도를 요구한다. HashMap으로 치환이가능한 알고리즘이라면 HashMap의 키에 값을 넣고 키를 가지고있는지 조회하면 HashMap의 containkey 타입으로 확인을 하면 key 값의 메모리 주소를 바로 찾기 때문에 O(1) 단한번의 연산으로 끝낼수있다 import java.util.ArrayList; public class Scartch { public int solution(int[] A) { ArrayListarrayList = new ArrayLi.. 2023. 6. 29. 프로그래머스 lv2 괄호회전하기 자바(Java) Stack활용/ 올바른 괄호문제 기본적으로 괄호문제의 경우 스택을 사용하여 풀이를 진행합니다. 괄호문제에서는 스택은 선언, push, pop 만 알고있어도 쉽게 풀이가 가능합니다. 여기서 스택의 특징인 push 로 들어간 순서에서 가장 마지막으로 들어간 순서 부터 꺼내는 자료구조입니다. 보통괄호 문제는 ( 일때 push 를 하고 , ) 가 나올때 pop 을 해서 Stack.isEmpty()를통해 스택이 비어있게 되면 올바른 괄호가 되는것입니다. (()) 식의 중첩이나 ()() 개별 괄호를 검증할수있습니다. 이런식으로 Stack.isEmpty() 메서드를 통해 stack 이 남아있거나. ex) ()()( , ((()) 2023. 2. 17. 프로그래머스 lv2 멀리뛰기 자바(Java) 동적계획법/ 피보나치수열 필자는 위의 유형과 같은 문제를 풀다 해결법이 안나오면 스케치를 해봅니다. 그러다 우연히 발견한것은 N에 대한 정답의 값이 n-1과 n-2 의 합과 같은 패턴 이것은 피보나치 수열입니다. 대부분의 알고리즘 문제에서 피보나치수열은 시간복잡도를 많이 소요하기 때문에 통과하기 어렵습니다. 자세한 설명과 이유는 https://eccsck.tistory.com/51에 있습니다. 역시나, 결과는 시간 초과입니다. 이번에는 배열을 통해 이전값들을 저장하고 다시 불러오는 동적 계획법을 이용해서 풀이해보겠습니다. n의 크기만큼 값을 구하여 각각의 값을 저장하게 됩니다. 그렇게 되면 이전의 값을 구하기 위해 다시 계산하지 않기때문에 시간복잡도를 줄일수있습니다 확실히 시간복잡도가 개선 되어서 통과하게 되었습니다 public.. 2023. 1. 31. 연산자 오버로딩, 프렌드 오버로딩이란? 이름이 함수 함수 여러개가 있을때, 각각의 함수가 받는 매개 변수에 따라 다른 방식으로 처리하게 도와준다. 쉽게 말해 다른기능을 함수를 같은이름, 다른 매게 변수로 지정하는 것을 의미합니다. 연산자 오버로딩 위에서 설명한 오버로딩기능을 연산자에도 적용시킨것 객체에 직접 *,+ 연산자를 사용하게 하는용도로 쓰입니다. 예를들어 +,* 는 int 형이나 실수형을 매개 변수로 받은후, int 와 실수형을 리턴시킨다 이 +,* 를 오버로딩하여 직접만든 Time 이라는 객체에 적용시키는 오버로딩 함수를 만들어보겠습니다. 이러한 Time 이라는 클래스가 존재할때 이렇게 매서드를 정의하면 이렇게 각각 정의된 함수를 더하는 매서드를 사용하게됩니다. (위의출력값) 이 매서드를 + 연산자 오버로딩을 통해서 T.. 2023. 1. 30. C++ 포인터란? 포인터란? 포인터는 메모리의 값을저장하는 변수이다. 하지만 이런 정의보다 자세한 설명을 하게되면 포인터는 이렇게 선언하게된다. &는 변수의 메모리 값을 표현해준다. value 5의 값과 주소값을 확인해보자 value 의 변수값을 포인터 a에 대입하게되면 다음과 같이 나온다 포인터에는 몇가지 규칙이있다 포인터변수의 자료형은 가르키는 변수의 자료형과 같아야한다 포인터주소값에는 정수 값이 들어갈수없다 C++ 에서는 포인터에 메모리 주소를 직접 할당할수없다. 기본적인 개념은 여기까지이고 C++ 의 포인터는 잘못사용하면 프로그램의 안정성을 떨어뜨리기 때문에 개념을 확실히 잡고 사용해야한다 2023. 1. 26. 이전 1 2 3 4 ··· 7 다음