본문 바로가기

분류 전체보기

(61)
안드로이드 스튜디오(Android Studio) View : 화면에 보이는 각각의 것들, layout, control 이나 위젯(버튼 ,text view 등)등이라 불리는 UI구성 요소 View Group : 뷰들을 포함하는 것(ex - constraint layout) drawble폴더 : 이미지 주로 drawble에 저장 (drawble xml 파일로 이미지 만들거나 상태에 따른 이미지 설정 가능) scrollView -> layout을 넣어서 활용가능 레이아웃 인플레이션 : XML 레이아웃에 정의된 내용이 메모리에 객체화되는 과정(setContentView()) (부분화면 inflation은 직접 LAYOUT_INFLATER_SERVICE를 이용) ex) ( inflater.inflate(R.layout a,container,true) -> a ..
4. Link Layer(링크 계층) Link Layer는 홉에서 홉까지 사이에서 발생하는 전송 층이라고 생각하면 된다. [MAC(multiple access protocol)] 홉 사이, subnet 안에서는 기본적으로 broadcast medium을 통해 신호가 퍼지기 때문에 충돌이 나지 않게 전송해주는 프로토콜이 필요하다. 그것이 MAC이다. 1. channel partitioning (절대 충돌은 발생하지 않음) TDMA(time division multiple access) : 시간을 나누어 본인의 시간에만 전송하는 방법(한 사람만 전송하는 경우 비효율) FDMA(frequency division multiple access) : 주파수를 나누어 본인의 주파수로 전송한는 방법(안 쓰이는 주파수 낭비) 2. random access(..
[프로그래머스] 프렌즈4블록 (2018 KAKAO BLIND RECRUITMENT) 문제 링크 : programmers.co.kr/learn/courses/30/lessons/17679 시뮬레이션 문제 1. 네 블록이 같은 곳들 전부 터트려준다(check이차원 배열에 표시) 2. 터트려주면 열마다 밑에서 올라오면서 제자리로 떨어뜨려준다.(자신보다 밑에서 터진 개수만큼 떨구면 됨) 3. 1,2 를 반복하다가 더이상 터지는 곳이 없으면 종료. #include #include using namespace std; int m=6; int n=6; vector board; bool check[32][32]; //터지는 곳 체크 bool explode() //4개 같은블록들 터트리기 { bool is_exploded = false; for (int i = 0; i < m-1; i++) { for ..
[프로그래머스] 괄호 변환 (2020 KAKAO BLIND RECRUITMENT) 문제 링크 : programmers.co.kr/learn/courses/30/lessons/60058 문제 자체에 알고리즘이 완벽하게 주어져 있다. 알고리즘이 주어져있지 않았다면 분명히 어려운 문제겠지만 문제에 알고리즘이 자세히 설명되어있기에 그냥 고민할 것 없이 그대로 구현하면 된다. 알고리즘이 그대로 적혀있기에 굳이 설명할 것 없이 넘어가겠다. 전체적인 알고리즘은 그대로 구현하면 되지만 올바른 문자열인지 아닌지 판별하는 함수는 생각해 보아야 한다. 올바른 괄호 문자열 판별은 단순히 스택을 이용해서 알 수 있다. 열린 괄호일 때 stack에 넣어주고 닫힌 괄호일 때 stack에서 빼주면서 쌍을 만들어 준다. 모두 쌍이 만들어지면 올바른 괄호 문자열이다. (코드에서는 stack을 이용하여 구현하였지만 사..
백준 17143번: 낚시왕 (C++) 문제 링크 : www.acmicpc.net/problem/17143 시뮬레이션, 구현 문제이다. 1. 오른쪽으로 한 칸 이동한다. 2. 물고기를 잡는다. -물고기를 잡을때는 해당 열에서 밑으로 내려가면서 탐색을 하다가 상어를 만나면 지도에서 제거하고 sum에 더한다. 3. 1초동안 물고기들을 움직이게 한다. - 지도를 탐색하면서 상어가 있으면 상어들을 움직이게 해준다. 움직인 상어들을 tmp임시지도에 저장한다. - 임시 지도를 현실 지도로 복사한다. (현실 지도를 순차탐색 하고 있기 때문에 이미 움직인 상어를 선택하지 않기 위해 임시지도 사용) 4. 1,2,3번을 n번 반복한다. (시간복잡도) 생각없이 그냥 속력1마다 이동하는 식으로 구현을 하면 시간초과가 나게 된다. 그 이유는 상어의 s속력의 범위가 ..
[프로그래머스] 단체사진 찍기 (2017 카카오코드 본선) (level 3) 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/1835 문제를 읽으면 제일 빠르게 떠오르는 풀이는 줄을 모든 경우의 수로 세워본 다음 조건에 맞는지 확인하는 방법일 것이다. 친구의 수가 8명이다 보니 줄 세우는 모든 경우의 수는 8!=40320밖에 안된다. 물론 하나의 경우의 수마다 조건을 확인하는 방법이 복잡하다면 충분히 시간 초과가 날 수 있지만 조건 확인하는 연산은 O(1)이고 조건의 개수는 100개 이하이니 시간 초과는 나지 않을 것을 예상할 수 있다. 1. dfs를 이용하여 모든 경우의 수로 줄을 세워본다. 2. 줄을 세웠으면 isright 함수로 조건에 맞는지 확인을 해본다. 3. 조건에 맞으면 result를 증가시킨다. #includ..
3. Network Layer(네트워크 계층) Transport Layer까지는 단말끝에서 발생하는 상황만 생각하면 되었다. 하지만 Network Layer부터는 이제 라우터로 인해 패킷이 전송되는 과정을 알 수 있다. 즉 모든 라우터는 Network Layer의 기능을 보유하고 있다. 라우터들은 ip를 확인하여 목적지까지 패킷들을 전송해야하기 때문에 Network Layer의 기능을 가지고 있다. forwarding -> forwarding table를 보고 패킷을 다음 라우터로 전송하는 과정 routing -> routing algorithm을 이용해 forwarding table를 만드는 과정 - 현재 ip주소는 ipv4를 사용하고 총 32bit이다. - ip주소에는 network주소와 host주소로 표기되며 subnet mask를 이용하여 n..
백준 1541번: 잃어버린 괄호 (C++) 문제 링크 : https://www.acmicpc.net/problem/1541 너무 간단한 문자열 문제이다. 1. 수를 최소로 만드려면 '-'로 최대한 많은 수를 묶어야 한다는 것을 알 수 있다. 2. '-'가 나오기 전까지는 '-'로 묶을 수가 없으니 당연히 더하는 방법밖에는 없다. 결국 '-'가 나오기 전까지는 모두 더해준 다. 3. '-'나온 후에는 모두 빼면 된다는 것을 쉽게 알 수 있다. '-'가 한번이라도 나온 후에는 모두 음수로 만들 수 있다. ex) 1+2-3+4+5+6+7 -> 1+2-(3+4+5+6+7) ex) 1+2-3+4+5-6+7 -> 1+2-(3+4+5)-(6+7) #include #include using namespace std; int main() { ios_base::s..
[프로그래머스] 보행자 천국 (2017 카카오코드 예선) (level 3) 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/1832 문제를 읽어보니 순간 두 가지 방법이 떠올랐다.-> dfs,bfs를 이용하는 방법, dp를 이용하는 방법. 이차원배열의 크기가 500*500=250000되는 것만 보아도 dfs,bfs를 이용하면 시간초과를 훌쩍 넘길 것을 예상할 수 있다. 게다가 20170805으로 나눈 나머지값을 리턴하라는 것만 보아도 시간초과를 예상할 수 있다. 당연히 방법은 dp를 사용하여야 한다. 1. 배열은 이차원이라 d[502][502] 를 선언해야 하지만 각 위치마다 위에서 내려온 경로, 왼쪽에서 온 경로 두가지를 나눠 저장해야 했기때문에 d[502][502][2]를 선언하였다. 0은 위에서 온 경우,, 1은 왼..
2. Transport Layer(전송 계층) 기능 multiplexing -> 여러 소켓의 메시지를 하나의 통로로 내려보냄 demultiplexing ->메시지를 분류해서 해당 소켓으로 올려줌(port 넘버 이용) (udp는 destination port 번호만 보고 demultiplexing진행) checksum -> 오류있는지 확인 , 오류 있으면 drop 주요 기능 - reliable data transfer(유실 없이 순서대로 전송)(buffer에 순서대로 저장) -> 재전송, sequence number , timer 등 - flow control -> 상대방의 능력에 맞게 제어 - congestion control -> 네트워크 상태에 따라 제어 - udp기능 모두 포함 -> 단 tcp의 demultiplexing 경우 source ip..