애정코딩 💻

10월 17일 2문제 - Java

1. 문자열 압축 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오. 단 반복횟수가 1인 경우 생략합니다. 우선 index 오류를 잡기 위해 어떤 방법을 써야 하는지 잘 몰라 강의를 참고 했다. 공백 문자를 추가해서 앞뒤 문자 를 비교하는 방식으로 했다. import java.util.Scanner; public class Test1_11 { public String solution(String sentence) { String result = ""; int cnt = 1; // 맨 끝 글자를 위해 공백 추가 > indexOfBind 방지 sentence = sentence + ..

알고리즘 2021.10.17 Joana

10월 16일 2문제 - Java

1. 숫자만 추출 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다. 알파벳이 아닌 것을 result 에 담은 후 parseInt 로 형변환 해주었다! import java.util.Scanner; public class Test1_09 { public int solution(String sentence) { String result = ""; for (int i = 0; i < sentence.length(); i++) { if (!Character.isAlphabeti..

알고리즘 2021.10.16 Joana

10월 14일 2문제 - Java

1. 회문 문자열 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다. 1. 애초에 처음 틀린 문자가 있을 경우 회문 문자열이 아니기 때문에 바로 return NO 를 return 한다. import java.util.Scanner; public class Main { public String solution(String sentence) { String result = ""; sentence = sentence.toLowerCase(); char[] ch = sentence.toCharArray(); in..

알고리즘 2021.10.14 Joana

10월 13일 2문제 - Java

1. 특정 문자 뒤집기 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고, 특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요. 1. 첫번째 index 에서 알파벳인지 확인한다. 특수문자일 경우 다음칸으로 index++; 2. 마지막 index에서 알파벳인지 확인한다. 특수문자일 경우 다음칸으로 index--; 3. 둘다 알파벳일 경우 서로 자리를 바꿔준 후 index++;, index--; 로 자리를 이동한다. import java.util.Scanner; public class Main { public String solution(String sentence) { String result = ""; char[] ch = sentence.toCharA..

알고리즘 2021.10.13 Joana

10월 12일 2문제 - Java

3. 문장 속 단어 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요. *문장속의 각 단어는 공백으로 구분됩니다. *가장 길이기 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로 한다. *subString , split 의 차이점* subString - index를 설정해서 문자열을 자를 수 있다. split - 특정문자를 기준으로 문자열을 잘라 문자열배열에 넣어준다. import java.util.Scanner; public class Main { public String solution(String sentence) { String result = ""; String[] world = sentence.split(" "); for (String ..

알고리즘 2021.10.12 Joana

10월 11일 2문제 - Java

1. 문자 찾기 한개의 문자열을 입력받고 특정 문자를 입력받아 입력받은 문자열에 특정문자가 몇개 존재 하는 지 알아낸다. * 대소문자를 구분하지 않는다. 1. 특정문자 1개를 받아 변수에 넣기 위해 charAt(0)을 사용했다. sc.next().charAt(0) 2. Character.toUpperCase() 를 통해 특정문자 1개를 대문자로 변경했다. 3. 향상된 for문 사용을 위해 String 문자열을 toCharArray() 을 사용하여 char 배열로 변경했다. import java.util.Scanner; public class Main { public int solution(String str, char ch) { int answer = 0; str = str.toUpperCase(); c..

알고리즘 2021.10.12 Joana

내가 보려고 정리하는 JAVA 멀티 스레드 5- 스레드풀

스레드풀은 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 큐에 들어오는 작업들을 하나씩 스레드가 맡아 처리한다. 병렬 작업 처리가 많아지면 스레드 개수가 증가되는데 그에 따른 스레드 생성, 스케줄링으로 인해 CPU가 바빠져 메모리 사용량이 늘어난다. 따라서 애플리케이션의 성능이 저화 되므로 스레드 풀을 사용하여 스레드 전체 개수가 늘어나지 않도록 해야한다. 스레드풀 생성 public class ExecutorExample { public static void main(String[] args) { // 1개의 스레드를 사용하는 스레드풀 생성 ExecutorService singleThread = Executors.newSingleThreadExecutor(); // 스레드를 제한 없이 사..

WEB/JAVA 2021.10.06 Joana

내가 보려고 정리하는 JAVA 멀티 스레드 4- 데몬 스레드, 스레드 그룹

데몬 스레드 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드입니다. 그렇기 때문에 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동 종료됩니다. 적용 예로는 자동 저장, 가비지 컬렉터 등이 있는데 이 기능들은 주 스레드가 종료되면 같이 종료됩니다. 데몬 스레드 내용을 작성해준 후 public class DaemonThread extends Thread{ public void save(){ // 자동 저장 } public void run(){ save(); } } 메인 스레드에서 setDaemon 을 해주면 된다. public class mainThread(){ public static void main(String[] args){ DaemonThread daemonThread = new Dae..

WEB/JAVA 2021.10.06 Joana

내가 보려고 정리하는 JAVA 멀티 스레드 3- 스레드 상태

스레드는 실행대기 상태와 실행 상태를 번갈아가면서 자신의 run() 메서드를 조금씩 실행합니다. 그 후 더이상 실행할 코드가 없을 때 종료 상태가 됩니다. 스레드 객체 생성 -> start() -> 실행대기(스케줄링으로 인해) 실행 -> 종료 - 스레드 스케줄링으로 선택된 스레드가 cpu를 점유하고 run() 메서드를 실행한다 (실행 상태) - 스레드 스케줄링에 의해 다시 실행대기 상태로 돌아갈 수 있다.(실행대기 상태) 어떻게 제어할까? 1. 주어진 시간동안 일시 정지 sleep() 실행 중인 스레드를 일정 시간 멈출 수 있게 한다. Thread 클래스의 정적 메서드인 sleep() 을 사용한다. Thread.sleep(1000) // 1초 -> 밀리세컨드 (1/1000) 단위 * 주어진 시간이 되기전..

WEB/JAVA 2021.10.05 Joana

내가 보려고 정리하는 JAVA 멀티 스레드 2 - 동기화 메서드와 동기화 블록

동기화 메서드와 동기화 블록 멀티스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있다. 스레드a가 사용하던 객체를 b에 의해 상태가 변경 될 수 있어서 a가 의도했던 결과와 달라질 수 있기 때문에 사용중인 스레드의 작업이 끝날 때까지 객체에 잠금을 걸어 다른 스레드가 사용할 수 없도록 해야 한다. 단 하나의 스레드를 실행하는 임계 영역을 만들어주면 된다. -> 스레드가 객채 내부의 동기화 메소드 또는 블록에 들어가면 즉시 객체에 잠금을 걸어 다른 스레드가 영역에 있는 코드를 실행하지 못하도록 한다. 메서드 실행 종료 되면 잠금이 풀린다. 사용방법은 아래와 같다 public synchronized void method(){ // 임계 영역 } 일부 내용만 만들고 싶다면 아래와 같이 블..

WEB/JAVA 2021.09.28 Joana

내가 보려고 정리하는 JAVA 멀티 스레드 1 - 멀티스레드 개념

멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹이라고 볼 수 있다. 멀티 스레드는 다양한 곳에서 사용된다. 1. 대용량 데이터의 처리 시간을 줄이기 위해 데이터를 분할해서 병렬로 처리하는 곳에서 사용 2. UI를 가지고 있는 애플리케이션에서 네트워크 통신을 하기 위해 사용 3. 다수 클라이언트의 요청을 처리하는 서버를 개발할 때 - 메인 스레드 메인 스레드가 작업 스레드보다 먼저 종료되더라도 작업 스레드가 계속 실행 중이면 프로세스는 종료되지 않는다. - 작업 스레드 몇 개의 작업을 병렬로 실행할지 결정하고 각 작업별로 스레드를 생성한다. (작업1) (작업2) (프로그램에서 병렬로 실행할 작업을 결정) -> 메인스레드 스레드1 스레드2 Thread클..

WEB/JAVA 2021.09.13 Joana

BaseAdapter 를 사용하여 ListView만들기 (위시리스트 or 투두리스트)

https://developer.android.com/reference/android/widget/BaseAdapter BaseAdapter | Android 개발자 | Android Developers developer.android.com ListView 를 사용할 때 수많은 데이터들이 어떻게 배치되고, 어떤 데이터가 들어갈것인지 관리해주는 역할을 한다. 실습하면서 설명하겠습니다. 우선 필요한 클래스는 화면뷰 / 리스트뷰 / 화면뷰.java / dto.java / apdapter.java 입니다. 화면뷰는 아래와 같습니다. wish_view.xml ListView 아래에 선언되어있는 listitem이 리스트뷰입니다. 새로 만들어줍니다. wish_list.xml 이 view는 리스트 한칸한칸에 대한 디..

Mobile/Android 2021.07.08 (1) Joana