전체 글

    10월 29일 1문제 - Java : Array

    1. 격자판 최대합 5*5 격자판에 아래롸 같이 숫자가 적혀있습니다. N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합니다. import java.util.Scanner; public class Main { public int solution(int[][] numberArray, int number) { int result = 0; int x, y; for (int i = 0; i < number; i++) { x = y = 0; for (int j = 0; j < number; j++) { x += numberArray[i][j]; y += numberArray[j][i]; } result = Math.max(result, x); result = Math..

    10월 21일 4문제 - Java : Array

    1. 자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다. 소수는 1과 자신으로만 나누어지는 수 입니다. 그러므로 2,3,4... 등 의 배수가 되면 안되겠죠! 여기서는 int 배열의 크기로 0 일때 count 되도록 했습니다. 2번째 for문에서 j=j+1 로 배수들을 체크 해주었습니다. (체크할 배수 만큼만 for문을 돈다) import java.util.Scanner; public class Test2_05 { public int solution(int number) { int result = 0; int[] ch = new int[number + 1]; f..

    10월 20일 4문제 - Java : Array

    1. 큰 수 출력하기 N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요. (첫 번째 수는 무조건 출력한다) import java.util.ArrayList; import java.util.Scanner; public class Test2_01 { public ArrayList solution(int[] numberArray) { ArrayList result = new ArrayList(); result.add(numberArray[0]); for (int i = 0; i < numberArray.length-1; i++) { if(numberArray[i]=3){ result.add("A"); }else{ result.add("B"); } } return resul..

    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 + ..

    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..

    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..

    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..

    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 ..

    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..

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

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

    내가 보려고 정리하는 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..

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

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