14일차 코드 리뷰를 진행해보자. 금일 문제는 백준에서 흔히 풀어보던 최댓값 구하는 스타일이라 딱히 어렵지 않게 해결할 수 있었으나 필자의 코드가 알고리즘적으로 최선의 코드는 아닌 것 같아 인터넷을 검색하다 훨씬 간결하고 좋은 알고리즘을 발견해 공유해보려고 한다. 그럼 우선 필자가 작성한 코드부터 살펴보자! import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; class Difference { private int[] elements; public int maximumDifference; int max = 0; int diff = 0; // Add your code here..
해커랭크 Day14 챌린지를 시작해보자. 🔥 오늘은 scope, import, package에 대해서 배웠다. 먼저 소스코드부터 확인하자. import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.*; public class CalendarPractice { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, 0); System.out.println(cal.getTime()); SimpleDateFormat format1 = new SimpleDate..
13일차 코드 리뷰를 진행해보자. 금일 문제는 강의에서 거의 유사한 소스코드로 수업을 진행하기 때문에 큰 어려움 없이 해결할 수 있었을 것이다. 필자의 경우 아직 추상 메서드 코드 작성에 미숙해 컴파일 에러를 많이 냈지만 로직 자체는 어렵지 않게 구상할 수 있었다. 최종 코드를 살펴보자. import java.util.Scanner; abstract class Book { String title; String author; Book(String title, String author) { this.title = title; this.author = author; } abstract void display(); } class MyBook extends Book { int price; public MyBook..
13일차 챌린지를 시작하자! 금일 tutorial은 이전의 소스코드를 재활용해 추상 메서드에 대해 배운다. (+ 상속 내용 이어서 나옴.) 바로 소스코드를 보자. 먼저 Animal 클래스이다. import org.w3c.dom.ls.LSOutput; public abstract class Animal { private int age; // VS private int age; public Animal(int age) { this.age = age; System.out.println("An animal has been created!"); } public abstract void eat(); public void sleep() { System.out.println("An animal is sleeping."..
🤔 Iterator, ListIterator, Enumeration 이란? ✔ 컬렉션에 저장된 데이터를 접근(읽어오기)하는 데 사용되는 인터페이스 ✔ Enumeration은 Iterator의 구버전 ✔ ListIterator는 iterator의 접근성을 향상시킨 것(단방향 -> 양방향) ✔ 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 ✔ 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용 🤔 Map과 Iterator ✔ Map에는 Iterator()가 없다. ✔ keySet(), entrySet(), values()를 호출해야한다. Map map = new HashMap(); ... Iterator it = map.entrySet().iterator(); 사용된 ..
필자가 최근에 주로 포스팅하는 hackerrank challenges 포스팅에서도 알 수 있지만 필자는 값을 받아올 때 보통 for문을 많이 사용한다. 그런데 hackerrank에서도 기본 소스 코드에 Iterator를 이용해 값을 받아오는 코드가 많은데 오늘 Iterator를 쓰는 확실한 이유를 알게 되었다!! 다음의 코드를 보자. import java.util.ArrayList; import java.util.Iterator; public class Iterator사용이유 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.ad..
12일차 챌린지를 시작해보자. 금일 문제는 조금 헷갈려 필자도 다음의 사이트를 참고해 작성했다. https://zetawiki.com/wiki/HR30_Day_12:_Inheritance HR30 Day 12: Inheritance - 제타위키 다음 문자열 포함... zetawiki.com 기존에 코드의 틀이 작성되어 있고 상속받는 생성자만 만들어주면 되는 문제였는데 강의를 듣기 전에 풀다보니 생성자 만드는 부분에서 조금 헷갈렸고 평균의 경우 필자가 생각한 방법으로는 for문에 합계를 저장한 변수가 sum이고 과목 개수를 저장한 변수가 numScores라면 avg = sum/numScores 이런식으로 문제를 풀었을 텐데 생성자가 따로 선언되어 있으니 저장된 값을 어떻게 받아와야 할지 몰랐다. 결국 위 ..
12일차 챌린지를 시작하자!! 문제에 Tutorial 링크가 없어 금일 강의는 없는 줄 알았는데 문제를 다 풀고 나서 강의가 있는 것을 확인했다. 😂 들을까 말까 고민하다가 상속은 중요한 파트이므로 듣고 포스팅한다. 그럼 바로 코드를 보자. package day12; import org.w3c.dom.ls.LSOutput; public class Animal { private int age; // VS private int age; public Animal(int age) { this.age = age; System.out.println("An animal has been created!"); } public void eat() { System.out.println("An animal is eating"..
해커랭크 챌린지 11일차다!! 오늘 문제는 지금까지 풀었던 문제중에 가장 막막하고 재밌었다!!(?) 우선 잠깐의 결과 확인부터~ 필자의 코딩 문제 풀기 역사 이래로(?) 최초로 부분 테스트 케이스 통과 (즉, 결론적으로 틀린 거임) 근데 확실히 틀린게 아니라 애매하게 틀려서 더 흥미로웠음.(?) (왜냐면 조금만 수정하면 풀 수 있다는 생각이 드니까 넘 짜릿하고 재밌었다. 😆) 처음엔 문제를 이해하는데 한 10분 이상을 소요했다. 번역기를 돌려도 모래시계 라는 말이 무엇을 의미하는지 몰랐고 번역기 + 예제 소스코드 설명 등을 한참 읽어보다 문제를 이해했다. 네이버 부스트캠프 코딩테스트를 응시하면서도 경험했었던 문제인데 백지에서 내가 직접 구현하는 것보다 입력받는 값까지 구현해두고 빈칸 채우는 식으로 문제 ..
Hackerrank challenges Day 11을 진행해보자. 강의 소스코드부터 확인해보자. package day11; import java.util.HashMap; import java.util.Map; public class LibraryCatalogue { // Properties/Fields/Global Variables Map bookCollection = new HashMap(); int currentDay = 0; int lengthOfCheckeoutPeriod = 7; double initialLateFee = 0.50; double feePerLateDay = 1.00; // Constructors public LibraryCatalogue(Map collection) { this...
🤔 Stack이란? ✔ LIFO 구조(Last In First Out) 마지막에 저장된 것을 제일 먼저 꺼냄. 저장(push) 추출(pop) 🤔 Queue란? ✔ FIFO 구조(First In First Out) 제일 먼저 저장한 것을 제일 먼저 꺼냄. 🤔 Stack의 메서드 🤔 pop()과 peek()의 차이 ✅ pop()은 맨 위에 값을 꺼내는 것이고 ✅ peek()은 맨 위에 값을 찾는 것이다. 🤔 search() ✅ stack에서 주어진 객체를 찾아 위치 반환하는 메서드 ✅ 못 찾으면 -1 반환 ✅ 배열과 달리 위치 1부터 시작 🤔 Queue 메서드 ✔ offer : 저장 ✔ poll : 추출 🤔 poll()과 remove()의 차이 ✅ remove() : 예외 발생(try-catch로 예외처리)..
🤔 LinkedList 배열의 장단점 ✅ 장점 ✔ 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. ✅ 단점 ✔ 크기를 변경할 수 없다. 크기를 변경해야 할 경우 새로운 배열을 생성 후 데이터를 복사해야 함. 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨. ✔ 비순차적인(중간에 데이터 넣는 것) 데이터의 추가, 삭제에 시간이 많이 걸림. 데이터를 추가하거나 삭제하기 위해 다른 데이터를 옮겨야 함. 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝에서 삭제)는 빠르다. 🤔 LinkedList - 배열의 단점을 보완 ✔ 배열과 달리 LinkedList는 불연속적으로 존재하는 데이터를 연결(link) ✔ 데이터의 삭제 : 단 한 번의 참조..
Hackerrank challenges Day 10 을 진행해보자. 오늘은 강의 포스팅은 진행하지 않겠다! 강의를 수강하지 않은 것은 아니나 강의 내용이 2진수의 설명과 2의 보수 진법?(1의 보수, 2의 보수,,)에 해당하는 설명이 진행되어 며칠 전 cs50 강의를 들으며 2진수에 대해 학습했기 때문에 (학교 수업, 교양 수업 등 2진수는 이미 많이 알고있었기 때문에) 따로 포스팅하지 않으려 한다. 그래서 바로 코드 리뷰를 진행하겠다. 위에서 설명했다 싶이 2진수에 관한 문제였다. 10진수의 숫자가 주어지면 2진수로 그 수를 표현했을 때 연속되는 1의 갯수를 출력하는 문제였다. 가장 많이 연속된 1의 갯수를 출력하면 되는 문제였는데 필자의 경우 처음에 조금 복잡하게 생각했다. 입력받은 10진수를 2진수..
지난 포스팅에 이어 이번 포스팅에서는 hackerrank challenges Day 9 자바 코드 리뷰를 진행해보자. 오늘 문제는 강의를 제대로 들었다면 바로 풀 수 있는 문제였다. 강의에서 소스 코드가 주어졌다고 해도 틀린말이 아니기 때문!! 예전에 백준에서 재귀 factorial문제를 못풀어 많이 방황했던 기억이 난다. 아무튼! 일단 오늘의 코드를 살펴보자. import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.function.*; import java.util.regex.*; import..
- Total
- Today
- Yesterday
- 정보처리산업기사 공부법
- stack
- 22 정보처리 산업기사
- ORM
- 22 정보처리산업기사
- 그리디
- 챌린지
- 풀이
- 강의
- queue
- 정보처리 산업기사
- LinkedList
- 해커랭크 자바 챌린지
- Java
- 개발자
- 디버깅
- 자바
- 해커랭크
- 정보처리산업기사
- BAEKJOON
- 해커랭크 챌린지
- hackerrank challenges
- 코드
- JPA
- 해커랭크 자바
- 백준
- challenges
- hackerrank
- 자바의 정석
- 소스코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |