분류 전체보기 (47) 썸네일형 리스트형 Live Study 5주차 : 과제 Optional 과제 int 값을 가지고 있는 이진트리를 나타내는 Node 클래스 정의 int value, Node left, Node right를 포함 BinaryTree 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node) dfs(Node node) 메소드 구현 dfs는 왼쪽, 루트, 오른쪽 순으로 순회 Node 클래스는 조건대로 구현했으며, insert에 대한 언급은 없어서 insertNode()라는 메소드를 만들어 왼쪽 자식과 오른쪽 자식을 가리키게 하여 트리를 구성했다. BFS는 큐와 연결리스트를 이용하여 왼쪽 자식과 오른쪽 자식을 큐에 넣어 구성했다. 이게 선생님이 의도한 코드인지는 잘 모르겠다. DFS는 전위 순회라고 생각했고 보다시피 매우 간단히 구현하여 마무리. 맨.. Live Study 5주차 : 클래스 목표 자바의 Class에 대해 학습하기 학습할 것 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 과제 마감 2020.12.19 1PM 클래스를 정의하기 전에 객체 지향과 객체에 대해 언급하려 한다. 자바는 객체 지향 언어이며 객체 지향의 장점은 해결하려는 문제의 요소들을 객체로 모델링할 수 있다. 객체들은 독립성이 유지되며 데이터에 의존하지 않으며, 생산성을 향상시킬 수 있다. 객체는 독립된 모듈이기에 다양한 프로그램에서 이 모듈을 재사용 할 수 있다. 등이 있다. 또한, 객체 지향에서는 객체를 만들기 위해 클래스를 이용한다. 붕어빵 틀이 클래스이고 붕어빵이 객체이다. 먹을 수 있는 것은 붕어빵이며 붕어빵 틀이 아니다.. BOJ 1525 퍼즐 BOJ 백준 1525 C++ 퍼즐 https://www.acmicpc.net/problem/1525 처음에 이 문제를 봤을 때 접근 시도 첫 번째, 재귀(DFS)가 생각났다. 재귀를 이용하려 해결하려 했지만 재귀 깊이가 어느 정도 가능할지? & 방문 확인을 어떻게 할 것인지? 에 관해 의문이 들었다. 그래도 한번 구현해봤다. 결과는 틀렸습니다. 간단한 경우의 입력에서는 원하는 출력이 나왔지만 아마 예외 케이스에 모두 걸렸을 거로 생각한다. (31을 출력해야 하는 예제에서 -1을 출력한다.) 접근 시도 두 번째, 우선 맵으로 주어진다. 그리고 '최소 이동 횟수'를 원한다. = BFS를 이용할 수 있지 않을까? 라는 생각이 강하게 든다. 그런데 지금까지 접해왔던 BFS와는 약간 다르다. 물론 방문했는지 확인.. BOJ 1062 가르침 BOJ 백준 1062 C++ 가르침 https://www.acmicpc.net/problem/1062 풀이 방법에 대해 아주 많이 헤맸던 문제이다. 기본적으로 조합을 한다고는 생각했고, 처음에 생각했던 풀이는 N개 단어에 대해 '1개를 선택하는 조합'부터 'N개 선택하기까지의 조합'을 만든다. -> 선택의 갯수가 1부터 N까지로 아주 다양한 조합이 나옴. 문제의 예제로 설명하자면 N=3이므로 [ 1 / 2 / 3 / 1,2 / 1,3 / 2,3 / 1,2,3 ] 7개의 경우가 발생하고, 3보다 조금 더 큰 N=10을 생각하면 훨씬 많은 경우가 발생한다. 각 조합에 대해 사용된 알파벳의 갯수를 세고 K개 이하일 때 ans값이 최대인지 확인하여 갱신한다. .. 라고 풀이하려했으나, N=50까지 가능하므로 T.. Live Study 4주차 : 제어문 목표 자바가 제공하는 제어문 학습 학습할 것 선택문 반복문 과제 마감 2020.12.12 1PM 제어문 제어문은 코딩하면서 가장 많이 쓰이는 문법 중 하나라고 생각한다. 이번주는 제어문 중 하나인 선택문과 반복문을 공부한다! 선택문 '선택문'이라 하면, 가장 먼저 떠오르는 것은 if 그리고 switch이다. 조건에 따라 분기한다. 단순 if문 조건에 따라 단순히 한 단위의 특정 작업을 수행해야 하는 경우 사용하는 if문이다. if(count < 0) // 조건문 System.out.println(count + "은(는) 음수입니다."); // 조건이 참일 때 수행 이중 if문 (if-else) 조건식의 결과에 따라 특정 작업을 수행해야 하는 경우 사용하는 선택문을 이중 선택문이라 한다. 조건에 따라 서로.. BOJ 16954 움직이는 미로 탈출 BOJ 백준 16954 C++ 움직이는 미로탈출 https://www.acmicpc.net/problem/16954 1) BFS - 완전히 전형적으로 나오는 BFS에서 조금 더 생각해야 함. 이와 유사 문제가 많음. 당장 생각나는 문제는 삼성 기출의 구슬 문제. 2) 몇 달 전에는 많이 헤맸던 유형인데 이제는 예전보다 풀만하다. 정답 제출하고 다른 풀이도 몇 개 봤는데 세부적인 구현이 갈리는 것 같다. 나는 단계별로 맵을 움직이기 위해 반복문(while)을 두 개 사용해서 구현했다. 3) 처음에 문제에서 [ 욱제 이동->벽 이동 ] 이라고 해서 욱제의 위치를 움직이고 벽을 이동하는 쪽으로 구현할까? 했는데, 그보다는 벽을 '먼저' 움직여놓고(line 40), 벽과 겹치지 않는 욱제의 위치(line 68).. BOJ 16562 친구비 BOJ 백준 16562 C++ 친구비 https://www.acmicpc.net/problem/16562 1) union-find 약간 변형된 문제 2) 기본 union-find를 풀 듯이, 처음에 모든 node의 부모를 자기 자신으로 설정했다. 그리고 M번 동안 친구 관계를 입력받으면서, 친구(부모가 같은 하나의 집합)가 아니라면 unite()함수를 실행한다. 는 unite()의 line 30-31에서 부모를 같게 만들 때, 가장 적은 비용으로 친구를 만들기 위해서 비용이 큰 node의 부모를, 작은 node의 부모로 바꿔준다. 3) 친구 관계를 정리 한 후, 모든 학생과 친구가 되었는지 확인 하기 위해 check[]를 이용하여 확인 했다. 4) 개인적으로 union-find 문제 풀 때마다 드는 생각.. BOJ 6497 전력난 BOJ 백준 6497 C++ 전력난 https://www.acmicpc.net/problem/6497 1) MST(최소 신장 트리)의 Kruskal(union find 이용) 문제 2) 벡터에 주어진 (from, to, dist)를 삽입 후 dist의 오름차순으로 정렬한 후, 차례대로 꺼내며 하나의 집합으로 만든다. 3) 집보다 길의 수가 (훨씬) 많이 주어질 수 있다. 연결된 길(cnt)이 [집의 수-1]개가 되었을 때 종료한다. -> 이 때 종료되면, 하나의 집합을 이룰 때 최소 비용을 구할 수 있다. 4) 문제에서는 절약할 수 있는 비용을 원하므로, 전체 비용에서 최소 비용을 빼면 답을 구할 수 있다. 5) testcase도 여러 개 주어질 수 있다. 정보를 저장한 벡터를 비우거나, 새 테스트케이스.. 이전 1 2 3 4 5 6 다음 목록 더보기