- SRP(Single Responsibility Principle) 단일 책임의 원칙 : 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야한다. class 강아지{ final static Boolean 수컷 = true; final static Boolean 암컷 = false; Boolean 성별; void 소변보다(){ if(this.성별 == 수컷){ //한쪽 다리를 들고 소변을 본다.} else{ //뒷 두다를 굽혀 앉은 자세로 소변을 본다.} } } abstract class 강아지{ abstract void 소변보다() } class 수컷강아지 extends 강아지{ void 소변보다(){ //한쪽 다리를 들고 소변을 본다.} } class 암컷강아지 extends 강아지{ void 소변..
사용이유 for과 Iterator의 경우 코드가 너무 길고 알아보기 힘들며 재사용이 떨어짐, 데이터소스마다 다른 방식으로 다뤄야 한다는 문제점도 있음(Collection.sort(), Arrays.sort()) 이런 문제를 해결하기 위해 stream을 사용함 - 스트림은 데이터 소스를 변경하지 않는다. - 스트림은 일회용이다 - 스트림은 작업을 내부 반복으로 처리한다. *Map,Of map : 원하는 필드만 뽑아내거나 특정형태로 변환해야 할때 사용 of : 배열을 소스로 하는 스트림을 생성할때 사용 ex. Stream.of("a","b","c") //가변인자 Stream.of(new String[]{"a","b","c"}) Arrays.stream(new String[]{"a","b","c"}) priv..
HTTP(HyperText Transfer Protocol) 웹에서 클라이언트에서 서버까지의 일련의 흐름을 결정하는 것 ex. 웹브라우저(클라이언트)가 주소 입력란에 url을 입력시 서버의 리소스를 요청하고 서버가 http로 통신한다. http는 하나의 요청에 대해 하나의 응답을 반환하는 아주 간단한 프로그램 -> 실제 페이지를 구성하고 있는 파일 수 만큼 이 작업을 반복한다. http는 '요청된 데이터를 반환하는 것' 만을 목적으로 만들어졌다. -> 한번의 요청과 응답으로 통신은 완결되고, 과거에 수행한 통신과 관련을 가지는 경우가 없다. 한번에 끝나는 프로토콜 : 무상태 프로토콜(Stateless protocol) IP/TCP/DNS TCP/IP 중 HTTP와 관계가 깊은 IP/TCP/DNS 프로토콜..
Fragment: 액티비티 처럼 이용할 수 있는 뷰 재사용 할 수 있는 컴포넌트나 하위 액티비티(다른 액티비티에 재사용 가능) Fragment를 왜 사용할까? Fragment로 런타임시 화면 일부를 제어 하거나 여러 화면에 재사용할 수 있다.(UI 유연성) Activity에 여러개의 fragments를 재사용 또는 사용하여 창이 여러개인 UI 빌드 가능 Fragment 동작방법 Fragment를 Activity layout에 추가 해당 Fragment는 Acvitiy의 view계층내에 있는 container에 들어간다. 이 container에서 자체적인 view layout을 정의한다. Activity layout file에서 로 선언 혹은 기본 container에 추가하는 방법으로 사용 Fragment..
Fragment Support Library VS Fragment Standard Library Support Library의 장점 해마다 Support Library의 업데이트 버전이 나와서 이 버전을 사용할 수 있다. 또한, Standard Library가 업데이트 시 API에 추가되면 Support Library API도 같이 추가된다. Fragment Support Library 사용방법 :Activity가 Fragment Activity 또는 하위 클래스를 상속받아야 한다. BUT! AppCompatActivity 클래스를 상속받으면 이 클래스가 Fragment Activity의 하위 클래스이므로 문제없이 작동한다. Support Library -> Standard Library Fragment..
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int tc = Integer.parseInt(br.readLine()); for (int i = 0; i < tc; i++) { String[] command = br.readLine().split(" "); if (command[0].equals("add")) { int num = Integer.parseInt(command[1])-1; set.addNum(num); } } public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffere..
기본값 이후의 배열을 비내림차순으로 만든 후 출력(순열) 가장 끝에서 부터 비교하는 이유: 처음 시작하는 순열의 최소값이여야 하므로 723/6541 3보다 큰수 : 6,5,4 중 가장 끝에 있는 수 선택 => 724/6531(O) => 726/5431 (X) import java.util.Scanner; public class Q10972 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int countNum = sc.nextInt(); int[] permutationList = new int[countNum]; for (int i = 0; i < countNum; i++) { permutationList[i]..
문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 후기 처음 Hashmap으로 풀었다가 계속 메모리 에러가 나서, 다른 블로그 글들 확인 후 다시 리팩토링 했다. alphabetASCIIArray 배열을 만들고 index 26(알파벳 갯수)까지 설정한다. 1) 입력받은 수를 대문자로 모두 변경 2) 아스키코드로 변환 후 배열에..
문제 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작했다. 상근이도 농구장을 청소하면서 감독이 되기 위해 가져야할 능력을 공부해나갔다. 서당개 3년이면 풍월을 읊듯이 상근이는 점점 감독으로 한 걸음 다가가고 있었다. 어느 날 그에게 지방의 한 프로농구팀을 감독할 기회가 생기게 되었다. 그는 엄청난 지도력을 보여주며 프로 리그에서 우승을 했고, 이제 국가대표팀의 감독이 되었다. 내일은 일본과 국가대표 친선 경기가 있는 날이다. 상근이는 내일 경기에 나설 선발 명단을 작성해야 한다. 국가대표팀의 감독이 된 이후에 상근이는 매우 게을러졌다. 그는 선수의 이름을 기억하지 못..
문제 김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다. 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고, 알파벳 소문자로만 이루어져 있다. 출력 첫째 줄에 가장 많이 팔린 책의 제목을 출력한다. 만약 가장 많이 팔린 책이 여러 개일 경우에는 사전 순으로 가장 앞서는 제목을 출력한다..