Study 85

내가 보려고 만든 CS지식) 오버라이딩 vs 오버로딩

말의 의미를 잘 생각해보자! 오버라이딩 덮어쓴다는 얘기다. 상위 클래스의 함수를 하위 클래스 함수로 덮어서 하위 클래스의 객체가 같은 이름의 함수를 호출하면 하위클래스의 함수가 호출된다. C 지원 X 오버로딩 더 적재한다는 얘기다. 같은 이름의 메서드 여러개가 있지만 매개변수의 유형이나 개수가 다르게 만들어서 새로운 함수로 거듭나게 만든다. C, Python 지원 X 여담으로 사실 파이썬에서는 필요하지가 않다. 어짜피 한 함수로 오버로딩처럼 다 되니까. 밑의 글이 이해되게 잘 써져있다. 다만 마지막 예제가 틀렸으니 주의바람! private.tistory.com/25 오버로딩과 오버라이딩 차이와 예제 자바에서 다형성을 지원하는 방법으로 메서드 오버로딩과 오버라이딩이 있습니다. 오버로딩(Overloading..

Study/CS 2020.10.23

내가 보려고 만든 CS지식) 스레드 풀

스레드 풀이란 어플리케이션에서 코드 실행을 하여 작업태스크 큐에 전달하여 순서대로 스레드에 넣어 작업해서 결과값을 어플리케이션에 보낸다. 콜백방식과 블로킹 방식이 있으며, 값을 전달하는 callable과 작업만 하는 runnable이 있다. 스레드의 생성은 최대 스레드 갯수를 초과하지 않는다. 초기 스레드, 코어 스레드, 최대 스레드가 있는데, 스레드 풀이 생성 될 때 생기는 스레드의 갯수를 초기 스레드라고 하고 최소 단위로 유지되는 스레드의 갯수를 코어 스레드, 최대 스레드는 스레드가 만들어질 수 있는 최대 스레드이다. 밑의 그림을 보면 이해하기 쉽다. 이 밑의 글은.. 너무 잘 정리해서 감동 받았던 글!!! 동영상도 보고 글도 보고 많이 찾아봤지만 이 글이 베스트인 것 같다. m.blog.naver...

Study/CS 2020.10.23

내가 보려고 만든 CS지식) POST와 GET의 차이점

HTTP 구조를 이해해야 된다. HTTP 구조를 보면 Header와 Body로 나뉘는 것을 볼 수 있는데, Body에서 POST 메소드를 사용해서 받아오는 데이터를 전달하고, Header에서 GET 메소드를 사용해서 받아오는 데이터를 전달한다. 밑의 주소로 들어가서 정리한 것을 보면 한 눈에 이해된다. 제일 중요한 점은!! GET은 조회를 위해 만들어져서 쿼리스트링으로 전달된다는 점과 POST는 수정, 생성, 삭제 등을 위해 만들어져서 바디로 전달된다는 점이다. 두 번째는 GET은 여러번을 실행시켜도 똑같은 데이터를 받아야 하고, POST는 다르다는 점! 잊지말자~!! 이 메소드를 좀 더 알려면 구글의 엑셀레이터 사건을 찾아보면서 이해하면 좀 더 빠르게 이해할 수 있다. hongsii.github.io/..

Study/CS 2020.10.21

[BOJ] 1113. 수영장 만들기 반례 / 테스트 케이스

백준 문제 주소: www.acmicpc.net/problem/1113 1113번: 수영장 만들기 지민이는 수영장을 만들려고 한다. 수영장을 만들 곳의 크기는 N*M이고, 각 칸은 직육면체이다. 따라서, 각 칸의 직육면체의 높이가 쓰여 있는 다음과 같은 땅을 생각할 수 있다. 16661 61116 16661 이 www.acmicpc.net 테스트 케이스 / 반례 48 40 1666116661166611666116661166611666116661 6111661116611166111661116611166111661116 1666116661166611666116661166611666116661 1666116661166611666116661166611666116661 6111661116611166111661116..

Study/BOJ 2020.10.19

[BOJ] 1113. 수영장 만들기

백준 문제 주소: www.acmicpc.net/problem/1113 1113번: 수영장 만들기 지민이는 수영장을 만들려고 한다. 수영장을 만들 곳의 크기는 N*M이고, 각 칸은 직육면체이다. 따라서, 각 칸의 직육면체의 높이가 쓰여 있는 다음과 같은 땅을 생각할 수 있다. 16661 61116 16661 이 www.acmicpc.net 문제 : 주어진 수영장들의 영역(부피)를 구하라. 풀이 : 1. DFS / BFS 둘 다 가능한데, BFS가 좀 더 편하게 풀리는 것 같습니다. 2. 수영장 땅의 최대 높이는 9이니까 1~8까지 높이대로 영역(부피)를 구하여 결과값에 각각 저장해줍니다. 3. 수영장 한 곳을 찝어서 BFS/DFS를 돌릴 때, 수영장 밖으로 나가면 거기는 수영장이 아니고, 그 안에서만 돌면..

Study/BOJ 2020.10.19

[BOJ] 17070. 파이프 옮기기 1

백준 문제 주소: www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 문제 : 파이프를 주어진 NxN배열에서 (0,0) -> (N-1,N-1) 까지 옮길 수 있는 방법의 수를 구하라. DP를 사용해서 푸는 문제였습니다. 처음엔 DFS로 풀었다가 14x14 배열까지는 답이 정상적으로 나오는데, 15x15 배열부터는 시간이 오래걸려서 시간초과가 뜹니다. 각 배열에 3차원의 DP를 사용하면 시간을 매우 단축하여 풀 수 있습니다. ※ dpdp(..

Study/BOJ 2020.10.14

[BOJ] 16236. 아기상어

백준 문제 주소: www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가�� www.acmicpc.net 문제가 귀여워서 시작했습니다. ㅎㅎ 푼 방법은!!! 아기상어의 위치는 움직이므로 처음 시작점을 9 -> 0으로 만듭니다. BFS를 이용하여 가장 가까우면서 먹을 수 있는 물고기를 찾아 잡아먹고! visited 배열을 만들어 자기 자신이 갔던 곳을 체크하면 됩니다. 한 번 잡아 먹을 때마다 계속 visited 초기화와 지난 시간을 체크하고, BFS 큐를 초기화하여 잡아 먹은 지점에서 ..

Study/BOJ 2020.10.07

[BOJ] 2064. IP 주소

백준 문제 주소 : www.acmicpc.net/problem/2064 2064번: IP 주소 네트워크에 연결되어 있는 컴퓨터들은 각각 하나의 IP 주소를 갖게 된다. 그리고 이러한 IP 주소를 갖는 컴퓨터들이 여러 개 모여서 하나의 IP 네트워크를 구성하게 된다. IP 네트워크는 ‘네트워� www.acmicpc.net 비트마스크로 풀려다가 포기하고 문자열로 푼 다음, 다시 비트마스크로 풀은 문제입니다... 돌돌 비트마스크 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 그래서 오늘 올릴 코드는 2개입니다! 문자열 코드와 비트마스크 코드!! ** 푼 방법 1. 일단 네트워크 마스크를 구한다. 2. 아무 IP에 네트워크 마스크를 &연산하면 네트워크 주소가 나온다. 끝. 하기엔 뭔가 아쉬우니까? 네트워크 마스크는 XOR연산과 NOT연산..

Study/BOJ 2020.09.17

[BOJ] 2206. 벽 부수고 이동하기

백준 문제 주소 : www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로�� www.acmicpc.net DFS, BFS의 머나먼 조상님 미로 문제에 조건 한 가지를 추가한 문제였습니다. 미로에서 단 한번!!! 벽을 부술 수 있다는 건데요. 하 ㅠㅠ 너무 힘들었어요 보이나요 제 노력... ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 처음은 그냥 itertools 라이브러리의 combinations을 사용해서 1이 하나씩 사라진 모든 2차원 배열을 만들었습니다. 바로 메모리초과~~^^ 그래..

Study/BOJ 2020.09.16

Argorithm 공부 : DFS와 BFS

DFS란? 깊이 우선 탐색 자신에게 연결되어 있는 여러 노드 중 하나를 골라 그 노드로 이동한다. 이동한 노드에서 연결되어 있는 여러 노드 중 하나를 골라 그 노드로 이동한다. 이렇게 계속 내려가다가 자식 노드가 없는 노드를 찾는다. 다시 부모 노드로 이동하여 새로운 자식 노드를 찾는다. 또 자식노드가 없으면 다시 부모노드로 이동하여 위의 순서를 반복한다. 완전탐색 중 한 방법 - 위의 순서를 보면 모든 노드를 체크하는 것을 볼 수 있다. DFS에서 발전된 알고리즘 : 백트레킹 백트레킹은 DFS 방식을 하면서 조건을 추가한다. 한 노드가 조건에 맞지 않으면 밑의 자식노드 또한 조건에 맞지 않으므로 다시 부모노드로 돌아간다. DFS보다 훨씬 시간을 줄일 수 있다. DFS를 이해하기 위해서는 그림을 보면 쉽..

Study/Argorithm 2020.08.29
반응형