오늘 한일
- 코드스쿼드 레벨 테스트 문제(콘솔상으로 볼링 게임을 만들고 웹으로 옮기기)
오늘 느낀점
- 예상했던 문제와 다른 형태의 문제가 나왔다. 그래서 구현하는데 더 재밌기도 하지만 오늘은 코드 작성 자체보다는 어떤 구조로 짤지 고민하는데 많은 시간을 썼다. 이제는 구조를 다 쫘뒀으니 코드로 구현을 하도록 하자
내일 할일
-
코드스쿼드 레벨 테스트 문제 풀기
-
코드스쿼드 방문
-
시간이 된다면 머리 깎기
코드스쿼드 레벨 테스트 문제 풀기
코드스쿼드 방문
시간이 된다면 머리 깎기
인프런의 영리한 프로그래밍을 위한 알고리즘 강좌를 보고 작성한 문서입니다.
int[] data = new int[capacity];
//data[0]에서 data[capacity-1]까지 데이터가 꽉차 있는 경우에는 다음과 같이 정렬한다.
Arrays.sort(data);
//배열이 꽉차 있지 않고 data[0]에서 data[size-1]까지 size개의 데이터만 있다면 다음과 같이 한다.
Arrays.sort(data, 0, size);
String[] fruits = new String[] {"Pineapple", "Apple", "Orange", "Banana"};
Arrays.sort(fruits);
for(String name : fruits)
System.out.println(name);
List<String fruits = new ArrayList<String>();
fits.add("Pineapple");
fits.add("Apple");
fits.add("Orange");
fits.add("Banana");
Collections.sort(fruits);
for(String name : fruits)
System.out.println(name);
public class Fruit{
public String name;
public int quantity;
public Fruit(String name, int quantity){
this.name = name;
this.quantity = quantity;
}
}
// somewhere in your program
Fruit [] fruits = new Fruit[4];
fruits[0] = new Fruit("Pineapple",70);
fruits[0] = new Fruit("Apple",100);
fruits[0] = new Fruit("Orange",80);
fruits[0] = new Fruit("Banana",90);
Arrays.sort(fruits);
무엇이 더 큰지 알수 없다.
사과와 바나나 중 누가 더큰가?
public class Fruit implements Comparable<Fruit>{
public String name;
public int quantity;
public Fruit(String name, int quantity){
this.name = name;
this.quantity = quantity;
}
//이름을 기중으로 정렬
public int compareTo(Fruit other){
return name.compareTo(other.name);
}
//수량을 기준으로 정렬
public int compareTo(Fruit other){
return quantity - other.quantity;
}
}
두가지 기준으로 정렬을 하고 싶다면?
하나의 객체 타입에 대해서 2가지 이상의 기준으로 정렬을 지원 할려면?
Comparator 클래스를 extends하여 compare 매서드를 overriding하는 새로운 이름 없는 클래스를 정의한 후 그 클래스의 객체를 하나 생성한다.
//Comparator를 implements하는 익명의 클래스로 객체를 만든다
Comparator<Fruit> nameComparator = new Comparator<Fruit>(){
public int compare(Fruit fruit1, Fruit fruit2){
return fruit1.name.compareTo(fruit2.name);
}
};
Comparator<Fruit> quantComparator = new Comparator<Fruit>(){
public int compare(Fruit fruit1, Fruit fruit2){
return fruit1.quantity - fruit2.quantity;
}
};
Arrays.sort(fruits, nameComparator);
//or
Arrays.sort(fruits, quantComparator);
public class Fruit{
public String name;
public int quantity;
public Fruit(String name, int quantity){
this.name = name;
this.quantity = quantity;
}
public static Comparator<Fruit> nameComparator = new Comparator<Fruit>(){
public int compare(Fruit fruit1, Fruit fruit2){
return fruit1.name.compareTo(fruit2.name);
}
};
public static Comparator<Fruit> quantComparator = new Comparator<Fruit>(){
public int compare(Fruit fruit1, Fruit fruit2){
return fruit1.quantity - fruit2.quantity;
}
};
}
각각의 객체마다 Comparator를 따로 갖고 있을 필요가 없기 때문에 static으로 둔다.
알고리즘 강의의 선형시간 정렬(Radix Sort)에 대해 공부했다. (포스팅)
파이썬 웹 프로그래밍 - Django로 웹서비스 개발하기 강의를 들었다. (인프런의 해당 강의)
헌혈을 했다.
이전 자바로 만들어 봤던 로또 웹 앱보다는 단순하지만 간단한 로또 웹 프로그래밍을 해봤는데, 이번에도 느낀게 파이썬 쪽은 사전지식이 적어도 사용하기 더 쉽게 되어 있는거 같다.(제대로 사용하기 위한 학습 또한 쉽다는건 아니다.)
뜬금없이 파이썬, Django 강의를 들은 이유는
한두번씩 있는 해커톤들이 보면 자바를 대상으로 한 것들은 없다 그렇기때문에 기회가 되면 참여하기 위해 학습 했다.
백엔드로 신입을 뽑는 스타트업들이 대부분 자바 + 스프링을 요구하는 곳은 없다.
웹 공부를 자바밖엔 안해봤기 때문에 좀더 시야를 넓혀 보고 싶었다. 내가 자바에서 했던 일들을 다른쪽에선 어떻게 할까? 등 좀 더 큰 시야를 가져보고 싶었다.(MVC 모델만 접해봐서 그게 당연하고, 다 그런줄 알았는데 MTV가 있다는 것도 알게 되었다. 참고로 자바스크립트를 공부했던 이유들 중엔 이와 비슷한 맥락의 이유도 있었다)
내일 코드스쿼드 레벨테스트를 하게 되는데 여건에 따라 시간이 남으면 해당 강좌를 마무리 해야겠다.
헌혈을 97번째 했다. 대학 초년때 목표했던 100번이 생각보다 길어졌었는데 올해는 가능 할 것 같다.
알고리즘 강의 듣기
파이썬&장고 강의
코드스쿼드 레벨 테스트
인프런의 영리한 프로그래밍을 위한 알고리즘 강좌를 보고 작성한 문서입니다.
RADIX-SORT(A,d)
for i <- 1 to d
do use a stable sort to sort array A on digit i
알고리즘 강의의 선형시간 정렬(Radix Sort)에 대해 공부했다. (포스팅)
인프런을 통해 생활코딩의 “웹브라우저 Javascript (자바스크립트)” 공부를 했다.
이틀간 생활코딩의 웹브라우저 Javascript 강의를 들어서 기본적인 사용법에 대해 배웠는데 확실히 이전에 가지고 있던 Javascript에 대한 알수없는 불안감 자체는 사라졌다. 거기다 프론트엔드가 어떻게 돌아가는지 좀 더 알게 된 것 같다.
덕분에 이전까진 관심이 없었던 Node.Js에 대해서도 궁금증이 생겼다.
알고리즘 강의 듣기
파이썬&장고 강의 혹은 개인 프로젝트