13. 2016년
2016년의 날짜를 입력하면 요일을 출력하기
public class year_2016 {
public static void main(String[] args) {
int a = 0;
int b = 0;
String answer = "";
String[] day = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
int[] date = {31,29,31,30,31,30,31,31,30,31,30,31};
int select = 0;
for(int i = 0; i < a-1; i++){
select += date[i];
}
select += b - 1;
answer = day[select % 7];
System.out.println(answer);
}
}
위에는 클래스를 따로 Import 하지 않고 풀었을 때의 풀이입니다.
2016년 개별 월의 마지막 날짜를 구해서 해당 날짜만큼을 8일
import java.time.LocalDate;
import java.util.Scanner;
public class year_2016 {
public static void main(String[] args) {
int a = 0;
int b = 0;
Scanner scanner = new Scanner(System.in);
a = scanner.nextInt();
b = scanner.nextInt();
String answer = "";
LocalDate date = LocalDate.of(2016, a,b);
System.out.println(date); // 2016-5-24
answer = date.getDayOfWeek().toString(); //요일은 String 타입으로 변환해야한다.
System.out.println(answer); // TUESDAY
System.out.println(answer.substring(0,3)); //.substring 메서드 사용해서 앞 3글자만 출력
}
}
LocalDate.of() 메서드를 사용하면 쉽게 날짜를 구할 수 있습니다.
사용하기 위해서
import java.time.LocalDate;
LocalDate.of(year, month, day)
.getDayOfWeek() 메서드를 사용하면 요일을 구할 수 있습니다.
단, String 타입으로 변환을 해줘야 합니다.
.toString() 을 사용하거나
String.valueOf() 를 사용해서 타입 변환을 해줍니다.
14. 나중에 떨어지는 숫자 배열
1. 배열의 길이를 구해서 조건값 찾기
2. 각 인덱스를 divisor 나눈 나머지 값 구하기 %divisor
3. 한번 길이를 정한 배열은 변경할 수 없기 때문에... 나머지가 0인 index의 수를 세기 count++
4. count 길이만큼의 배열 만들기 answer []
5. 나머지가 0이면 해당 Index값을 반환한 값을 answer [] 에 넣기
6. if else %divisor !=0 인 경우 count []에 -1 을 담기
7. 오름차순으로 배열하기 Arrays.sort 사용하기
import java.util.Arrays;
public class numberArray {
class Solution {
public int[] solution(int[] arr, int divisor) {
int count =0;
for(int i =0; i<arr.length; i++){
if(arr[i]%divisor==0){
count++;
}
}
int[] answer = new int[count];
count=0; //count 값 초기화 (변수명 바꿔도 상관x)
for (int i=0; i<arr.length; i++){
if(arr[i]%divisor==0){
answer[count] = arr[i]; //answer index [0]번째부터 값 넣어주기
count++;
}
}
if(answer.length==0){
answer = new int[1];
answer[0] =-1;
}
Arrays.sort(answer);
return answer;
}
}
}
15. 내적
1. for 문 이용해서 풀면 간단하다.
public class naejuk {
public static void main(String[] args) {
int answer = 0;
int[] a ={1,2,3,4};
int[] b ={-3,-1,0,2};
for(int i=0; i<a.length; i++){
answer +=(a[i]*b[i]); //()괄호를 해줘야 answer에 곱한 값이 들어간다.
}
System.out.println(answer);
}
}
16. 문자 내 p와 y의 개수
1. 문자열을 배열로 전환한다. char[] toCharArray(): 문자열을 문자배열로 변환해서 반환을 사용해본다.
2. p 또는 P의 개수(int p)와 y또는 Y의 개수(int y)를 센다.
3. 두 값이 같으면 true를 리턴한다. 아니면 false를 리턴한다.
import java.util.Arrays;
import java.util.Scanner;
public class py {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
int p =0;
int y =0;
char[] arr = s.toCharArray();
System.out.println(Arrays.toString(arr));
for(int i=0; i<arr.length; i++){
if(arr[i]=='p'|| arr[i]=='P'){
p++;
}
}
System.out.println(p);
for(int i=0; i<arr.length; i++){
if(arr[i]=='y'|| arr[i]=='Y'){
y++;
}
}
System.out.println(y);
boolean answer = true;
if(p==y){
answer = true;
}else{
answer = false;
}
System.out.println(answer);
}
}
소문자와 대문자를 || 로 넣었는데 그냥 처음부터
.toUpperCase()를 써서 굳이 || 를 안쓰게 할 수도 있었습니다.
.filter() 메서드라는 게 있네요. 아래는 좋아요를 가장 많은 풀이 입니다.
class Solution {
boolean solution(String s) {
s = s.toUpperCase();
return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
}
}
17. 문자열 다루기 기본
1. 길이 확인하기: s.length !=4 && s.length !=6 이면 false return
3. 문자인지 아닌지 확인하기 .charAt()과 for 문 사용하기
import java.util.Scanner;
public class stringControl {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
boolean answer = true;
if(s.length() !=4 && s.length() !=6){
answer = false; //길이가 4와 6이 아니면 false
}
for(int i=0; i<s.length(); i++){
if(s.charAt(i)<'0'|| s.charAt(i)>'9'){ //0보다 작거나 9보다 크면 false; char 이기 때문에 문자로 비교
answer = false;
}
}
System.out.println(answer);
}
}
생각보다 쉽게 풀어졌는데 프로그래머스에 제출 코드는 조금 변형했습니다.
s.length를 에러로 인식해서 새로 변수를 선언했습니다.
그리고 && 대신 || 를 사용해봤습니다.
class Solution {
public boolean solution(String s) {
boolean answer = false;
int length = s.length();
if(length==4 || length==6){
answer = true;
}
for(int i=0; i<length; i++){
if(s.charAt(i)<'0'|| s.charAt(i)>'9'){
answer=false;
}
}
return answer;
}
}
가장 좋아요를 많이 받은 풀이는 try, catch 문을 사용했습니다. 아직 안배운 부분이라 생각치 못했네요.
class Solution {
public boolean solution(String s) {
if(s.length() == 4 || s.length() == 6){
try{
int x = Integer.parseInt(s);
return true;
} catch(NumberFormatException e){
return false;
}
}
else return false;
}
}
18. 서울에서 김서방 찾기
1. kim 값을 찾는다. if문 사용 seoul[i].equals("kim"), System.out.println(i);
2. 해당 Index가 몇번째인지 알아내기
class Solution {
public String solution(String[] seoul) {
String answer = "";
int length = seoul.length;
for(int i =0;i<length; i++){
if(seoul[i].equals("Kim")){
answer = "김서방은 "+i+"에 있다";
}
}
return answer;
}
}
- 대문자 소문자 확인하기
- String 비교 할 때는 .equals() 메소드 사용하기
가장 좋아요를 많이 받은 풀이 입니다.
Arrays.asList() : Array를 List처럼 사용할 수 있게 해주는 클래스
.indexOf() 메소드를 사용했습니다.
'TIL' 카테고리의 다른 글
TIL 객체지향 예제 만들어보기 식당 매출 프로그램 221123 (0) | 2022.11.23 |
---|---|
TIL 알고리즘 모의고사 1~3 review 221122 (0) | 2022.11.22 |
TIL/WIL 부트캠프 1주차 회고 221120 (1) | 2022.11.20 |
TIL 자바 java 프로그래머스 알고리즘 문제 풀기 221119 (0) | 2022.11.19 |
TIL 자바 공부 프로그래머스 과제 제출 221118 (0) | 2022.11.18 |