🌴 문제 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. 예제 입력 1 복사 baekjoon 예제 출력 1 복사 1 0 -1 -1 2 -1 -1 -1 -1 4 3..
🌏 주제 : 숫자의 합(Java) 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. 예제 입력 1 복사 1 1 예제 출력 1 복사 1 예제 입력 2 복사 5 54321 예제 출력 2 복사 15 예제 입력 3 복사 25 7000000000000000000000000 예제 출력 3 복사 7 예제 입력 4 복사 11 10987654321 예제 출력 4 복사 46 🌏 풀이 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException..
🌱 오늘의 주제 : 04. 자바가 확장한 객체 지향 (1) 🌱 abstract 키워드 - 추상 메서드와 추상 클래스 추상 메서드는 선언부는 있는데, 구현부가 없는 메서드를 말한다. 추상 클래스는 인스턴스, 즉 객체를 만들 수 없다. new를 사용할 수 없다. 추상 메서드는 하위 클래스에게 메서드의 구현을 강제한다. 오버라이딩 강제. 추상 메서드를 포함하는 클래스는 반드시 추상 클래스여야 한다. 🌱 생성자 반환값이 없고 클래스명과 같은 이름을 가진 메서드를 객체를 생성하는 메서드라고 해서 객체 생성자 메서드라고 한다. 즉, 생성자이다. 개발자가 아무런 생성자도 만들지 않으면 자바는 인자가 없는 기본 생성자를 만들어 준다. 인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다. 🌱..
🌱 오늘의 주제 : 다형성: 사용편의성 🌱 오버라이딩? 오버로딩? 오버라이딩 - 재정의 : 상위클래스의 메서드와 같은 메서드 이름, 같은 인자 리스트 오버로딩 - 중복정의 : 같은 메서드 이름, 다른 인자 리스트 상위 클래스 타입의 객체 참조 변수를 사용하더라고 하위 클래스에서 오버라이딩(재정의) 한 메서드가 호출된다. 🌱 캡슐화: 정보 은닉 private - 본인만 접근 가능 [default] - 같은 패키지 내의 클래스에서 접근 가능 proteced - 상속 / 같은 패키지 내의 클래스에서 접근 가능 public - 모두가 접근 가능 상속을 받지 않았다면 객체 멤버는 객체를 생성한 후 객체 참조 변수를 이용해 접근해야 한다. 정적 멤버는 클래스명.정적멤버 형식으로 점근하는 것을 권장한다. 🌱 참조 변..
🌴 문제 문제 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. 입력 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다. 출력 입력으로 주어진 글자의 아스키 코드 값을 출력한다. 예제 입력 1 복사 A 예제 출력 1 복사 65 예제 입력 2 복사 C 예제 출력 2 복사 67 예제 입력 3 복사 0 예제 출력 3 복사 48 예제 입력 4 복사 9 예제 출력 4 복사 57 예제 입력 5 복사 a 예제 출력 5 복사 97 예제 입력 6 복사 z 예제 출력 6 복사 122 🌴 문제 분석 package BAEKJOON; import java.util.Scanner; public class day21 { public stat..
🌱 오늘의 주제 : 쓰레드란? 🌱 쓰레드란? 프로세스란 간단히 말해서 '실행 중인 프로그램'이다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며, 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스라고 한다. 메신저로 채팅하면서 파일을 다운로드 받거나 음성대화를 나눌 수 있는 것이 가능한 이유가 멀티쓰레드로 작성되어 있기 때문이다. 🌱 멀티쓰레딩의 장단점 CPU의 사용률을 향상시킨다. 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다. 작업이 분리되어 코드가 간결해진다. 🌱 쓰레드의 구현과 실행 ..
🌱 오늘의 주제 : Java - 에너테이션의 조상, 규칙, 활용 🌱 모든 에너테이션의 조상 모든 에너테이션의 조상은 Annotation이다. 상속은 허용이 되지 않는다. Annotation을 조상으로 지정할 수 없다. @interface TestInfo extends Annotation { // 에러. 허용되지 않는 표현 } 모든 애너테이션의 객체에 대해 equals(), hashCode(), toString()과 같은 메서드를 호출하는 것이 가능하다. 🌱 애너테이션의 요소의 규칙 요소의 타입은 기본형, String, enum, 애너테이션, class만 허용된다. () 안에 매개변수를 선언할 수 없다. 예외를 선언할 수 없다. 요소를 타입 매개변수로 정의할 수 없다. @interface Annotest ..
🌴 문제 문제 단어 S와 정수 i가 주어졌을 때, S의 i번째 글자를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 영어 소문자와 대문자로만 이루어진 단어 S가 주어진다. 단어의 길이는 최대 1000$1\,000$이다. 둘째 줄에 정수 i가 주어진다. 출력 S의 i번째 글자를 출력한다. 예제 입력 1 복사 Sprout 3 예제 출력 1 복사 r 예제 입력 2 복사 shiftpsh 6 예제 출력 2 복사 p 예제 입력 3 복사 Baekjoon 4 예제 출력 3 복사 k 🌴 문제 분석 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class d..
🌱 오늘의 주제 : 메타 애너테이션이란? 🌱 메타 애너테이션이란? 메타 애너테이션은 에너테이션을 위한 에너테이션이다. 즉, 에너테이션에 붙이는 에너테이션으로 적용대상이나 유지기간등을 지정하는데 사용된다. 메타 에너테이션은 java.lang.annotation패키지에 포함되어 있다. 🌱 @Target 애너테이션이 적용가능한 대상일 지정하는데 사용. 아래는 @SuppressWarnings를 정의한 것이다. 이 애너테이션에 적용할 수 있는 대상을 @Target으로 지정했다. @Target ({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) @Retention(RetentionPolicy.SOURCE) public @interface Suppress..
🌴 문제 문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력..