전체 글 (380) 썸네일형 리스트형 (자바 표현법) 반복자(Iterator)를 갖는 범용자료구조의 구현 (반복자패턴 관련자료 중에서) 반복자(Iterator)를 갖는 범용자료구조 구현 코드 /* 반복자(Iterator)를 갖는 범용자료구조 구현 코드 -범용자료구조의 반복자를 구현하려면 해당범용자료구조는 Iterable인터페이스를 구현해야함. -Iterable인터페이스를 구현해야 한다는 것은 iterator()메서드를 구현한다는 것 (public Iterator iterator(){} ) -내가 반복자를 구현할 일이 있을까? 없을 것이다. 범용자료구조도 만들일이 없을것이다. 하지만 구현방식만 기록해 놓자면 아래와 같이 반환값으로 ArrayListIterator를 반환하고 이 반복자는 hasNext와 next를 구현한, 즉, Iterator인터페이스를 구현한 클래스이다. */ import java.util.I.. 반복자 패턴중 자바에서 범용 자료구조 구현시 겪게 되는 어려움 코드의 중심내용은 자바에서 범용 자료구조를 만들때 겪게 되는 번거로움에 대한 것임. 왜 범용 자료구조를 반복자 패턴단원에서 설명하나? 반복자는 자료구조와 분리할 수 없는 것이므로! 자바에서 범용리스트 구현시 그 안에 배열을 사용한다고 하면 범용배열, 이를태면 T[ ]list=new T[capacity];이런 식으로 만들수 없고 항상 Object를 사용한 Object배열을 만들수 밖에 없습니다. 이것은 자바의 템플릿 사용 규칙 때문인데 이러한 템플릿 사용 규칙때문에 반복자뿐만이 아니라 여러가지 다른것을 사용할 때 문제점이 있습니다(하지만 배포된 교수의 코드는 강제형변환을 통해서 T배열을 사용함). 또한 템플릿T가 불변객체가 아닌 수정 가능한 객체일때 반환 받은 것을 수정하면 원본인 items배열에도 영향을.. 백준(BOJ) 20546: 🐜 기적의 매매법 🐜 https://www.acmicpc.net/problem/20546 한번에 맞긴 했지만 문제 난이도를 생각할때 시간이 너무 오래 걸렸다. 뭔가 solution함수가 분기문이 많아 지저분한 느낌이 든다. 다른 코드는 어떤지 살펴보자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main{ static int solution1(int asset, int[]price){ int myStock=0; for(var p:price){ if(asset/p>0) { int num= (asset / p); asset-=(num*p);.. 백준(BOJ) 20056: 마법사 상어와 파이어볼 https://www.acmicpc.net/problem/20056 출처: https://tussle.tistory.com/985 https://developer-u.tistory.com/101 접근 방법 이 문제에 핵심 1. 1번행과 N번 행은 연결, 1번열과 N번 열은 연결되어있습니다. 2. 마법사 상어는 문제의 조건에 맞게 파이어볼을 발사합니다. 3. K번 이동 명령을 진행한 후, 남아있는 파이어볼 질량의 합을 결과로 출력합니다. 알고리즘 진행 순서. 1. 입력된 정보를 저장합니다. 2. K번 이동명령을 진행합니다. 3. 남아있는 파이어볼 질량의 합을 결과로 출력합니다. 파이어볼 이동명령 1번행과 N번 행은 연결, 1번열과 N번열은 연결? ※처음에 이 문장에 대해서 이해하지 못하였지만 예제입력을 시.. 백준(BOJ) 21608 : 상어 초등학교 https://www.acmicpc.net/problem/21608 문제 자체는 어렵지 않은데 까다로운 설정들이 들어가있어서 다시 해볼때도 주의하면서 해보는게 좋다. 🚀풀이 사방탐색, HashMap, 구현력 앉을 좌석을 찾는 방법을 구현할 때 NxN 배열을 순차 탐색하며 주어진 조건 3가지를 고려하여 자리를 선택하여 차례대로 학생들을 배치하였다. 3가지 조건을 고려하기 용이하도록 Seat 클래스를 만든 뒤, Comparable 인터 페이스를 상속하여 비교하였다. 비교하기 용이하기 위해 Seat클래스에는 x y 좌표, 주변 좋아하는 학생 수, 주변 빈칸 수를 필드로 가지도록 하였다. Seat 클래스안에 정보들을 한 번에 가지고 있지 않았더라면 중첩 if 문들로 비교를 해야 해서 가독성이 많이 떨어질 것이므.. 백준(BOJ) 15486 퇴사2 퇴사1 문제와의 차이점 동영상보고 기록해 놓기: https://www.acmicpc.net/problem/15486 어떻게 현실적으로 이 문제를 보고 어떻게 "이문제는 DP로 풀어야 한다"라고 떠올릴 수 있는 것인가? 우선은 해본다. 아래 그림과 같이 그려보는것이다. 1,2,3일째는 모두 그 이득이 0이다. 그런데 1일차에 있는 일을 하게 되면 그 이득으로 4일 차에 10을 얻게 된다. 마찬가지로 2일차의 일을 하게 되면 그 이득으로 7일차에 20의 이득을 얻게 된다. 이렇게 차근차근 표시해 나가는 것이다 우선은. 마찬가지로 3일차에 해당하는 일을 하게 되면 4일 차에 10의 이득을 얻게 된다. 그런데 이미 4일차에는 1일차에 해당하는 일을 했을때 얻을 수 있는 이득이 있다. 그러므로 1일차에 일을 하여.. 백준(BOJ) 2839번 설탕배달 https://www.acmicpc.net/problem/2839 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* DP단원에 속해있지만 문제를 보고나서 가장 먼저 떠오른건 탐욕적 알고리즘이었다. 이후 DP로 풀려했지만 시중에도 그렇고 깔끔한 풀이가 존재하지 않았다... */ public class Main{ public static int solution(int n){ int a; if(n==0) return 0; if(n=5) { a = solution(n - 5); if(a>=0) return a+1; } if(n>=3){ a=solution(n-3); if(a>=0) retur.. 백준(BOJ) 9655번 돌게임 https://www.acmicpc.net/problem/9655 DP쓸필요 없이 그냥 단순히 규칙만 찾으면 끝나는 문제다. " n = 1 : 돌이 1개가 있으면 상근이가 1개를 가져가면 끝나므로 상근이가 이긴다. n = 2 : 처음에 상근이가 1개를 가져가고 창영이가 남은 1개를 가져가면 되므로 창영이가 이긴다. n = 3 : 상근이가 처음에 돌 3개를 가져가면 끝나므로 상근이가 이긴다. n = 4 : 상근이가 돌 1개를 가져가든, 3개를 가져가든 돌이 1개나 3개가 남으므로 창영이가 이긴다. n = 5 : 상근이가 처음에 돌 1개를 가져갈 수 도 있고 3개를 가져갈 수도 있다. → 1개를 가져갔을 경우 : 4개가 남고 창영이가 1개를 가져가든 3개를 가져가든 1개나 3개가 남으므로 상근이가 이긴다. .. 이전 1 ··· 34 35 36 37 38 39 40 ··· 48 다음