언어 공부 내용 정리/백준

백준 자바 문자열 : 27866, 9086, 11654, 10809

wosrn 2023. 6. 5. 17:46

 

27866번

import java.util.Scanner;

public class Main{
	
	
	public static void main(String args[]) {
	
     Scanner input = new Scanner(System.in);
     
     String s = input.next();
     short j = input.nextShort();
     System.out.println(s.charAt(j-1));
     
	}
	
}

처음에 런타임에러가 떠서 풀이들을 찾아봤는데 다들 substring() 혹은 string 타입의 배열 혹은 bufferedreader 등을 쓰길래 그런걸 써야만 런타임에러가 나지 않는것일까 고민을 잠시 했는데 코드를 다시보니 j-1 부분을 j로 써서 틀린거였다 ..^^

코드는 이 방식이 가장 간단한 것 같은데 어떤 이점이 있어서 추가적인 클래스들을 쓰는 답안들이 많은지 알아봐야겠다

 

 

9086번

import java.util.Scanner;

public class Main{
	
	
	public static void main(String args[]) {
	
     Scanner input = new Scanner(System.in);
     int num = input.nextInt();
     for(int i=0;i<num;i++) {
    	 
     String s = input.next();
     System.out.print(s.charAt(0)) ;
     System.out.println(s.charAt(s.length()-1));
     
    }
     
    
     
	}
	
}

입력을 먼저 다 받고 출력을 한번에 해야하나 하다가 입력-출력을 반복하는걸로 해봤는데 정답이었다

 

11654번

import java.util.Scanner;

public class Main{
	
	public static void main(String args[]) {
	
     Scanner input = new Scanner(System.in);
  
     String s = input.next();
     System.out.print(s.charAt(0)+0);
     
	}
	
}

문자를 입력받아 아스키코드를 출력하는 문제이다

문자를 int형으로 변환하면 그 문자의 아스키코드값이 출력된다

위의 코드에선 따로 int 형을 사용하지 않고 s.charat(0)에 0을 더해 자동형변환을 유도한 코드이다

int형을 쓰려면 int k = input.next().charAt(0); 으로 코드를 작성해서 k값을 출력하면 된다

이 문제 관련 서치를 하다가 입출력(여러 입출력 방식들과 각 방식들의 시간적 효율 차이)에 관한 글을 보게되어 조만간 이부분에 대해 정리할 생각이다

27866번에서 생긴 의문과도 관련있는 부분인 것 같다

 

 

 

10809

import java.util.Scanner;

public class test {
	
	public static void main(String[] args) {
	Scanner input = new Scanner(System.in);
	String a = input.next();
	
	for(int i=97;i<=122;i++) {
		System.out.print(a.indexOf((char)i)+ " ");
	}
	
	}
}

코드 짧게 짜서+엄청 금방 생각해낸 코드라 좋아했는데 막상 제출해보니 메모리랑 런타임은 별 이득이 없는 것 같..다

더 효율적인 코드를 서치해보아야겠다