코드업 기초 100문제 풀이 후기(자바)

·2021년 8월 28일
1
post-thumbnail

1001번부터 1099번까지 기초 100문제를 자바로 풀어보았다.
자바를 기초부터 다시 리마인드할 수 있었다😆


출력

" 출력을 원한다면 System.out.printf(" \"");
\출력을 원한다면 System.out.printf(" \\");

문자열은 공백없이 붙게된다, 공백을 위해 " "추가해도 된다 System.out.println(a+" "+b);

년월일을 출력할때 System.out.printf("%04d.%02d.%02d",year,month,day);
%02d 2칸을 이용해 출력하는데, 2칸이 아니면 0을 붙인다라는게 포함

number의 변수를 출력시에 11자리까지 반올림해서 출력하겠다System.out.printf("%.11f",number);

8진수, 16진수 출력시 System.out,printf("%o,%x,%X")
16진수 대문자출력을 원하면 %X


입력

정수 scanner.nextInt(); , scanner.nextLong(); int형보다 큰 Long
실수 scanner.nextFloat();
16진수로 받고싶다면, scanner.nextInt(16);
String형으로 받는 scanner.next();, scanner.nextLine();

scanner.nextLine(); 은 공백을 포함해서 받기때문에 split()이 필요

String number = scanner.nextLine();  
String [] str = number.split("");
int a = Integer.parseInt(str[0]) ; 

split("") 은 공백을 기준, 한문자씩 자를때 사용한다

한문자씩 자르고 난후에 변환을 해줘도 된다. Integer.parseInt()으로 int형으로 변환

실수를 정수, 소수로 나누고 싶다면 split("\\.")을 해준다

string에서 변환을 해줄수도 있다 -> 소숫점 아래 6자리까지 받고싶다

String a = sc.nextLine();
String x6 = String.format("%.6f",a); 

StringTokenizer

간단하게 문자열을 토큰단위로 나눠주는 함수 (split과 동일하게 쪼갠다 )
hasMoreTokens이라는 내장함수가 존재 -> 토큰이 남았는지 확인하는 메소드

import java.util.StringTokenizer; //import에다가 부르기 

String date = sc.nextLine();
StringTokenizer token = new StringTokenizer(date,".");
int [] arr = new int[3];

while(token.hasMoreTokens()){
arr[i] = Integer.parseInt(token.nextToken());
i++;
} 

split 대신에 토큰을 사용함으로서, 남아있는 토큰이 있는지 확인할 수 있다.


변환

8진수->10진수 int num = Integer.valueOf(number,8);

string형->문자형 char c = sc.nextLine().charAt(0);

아스키코드값은 char형이어야 출력이 된다 char c = (char)num;


연산자

~,&,|,<<,>> 비트연산자는 bit로 계산을 한 후에 10진수로 출력한다

시프트 연산자 <<는 2를 곱하고, >>는 2를 나누어야한다

a<<b는 a를 b만큼 거듭제곱하는것이다.

자바에선 제곱연산자 대신에 제곱함수Math.pow(a,b)를 사용한다.

등차수열, 등비수열

등차: a + d*(n-1)
등비: (a*Math.pow(r,n-1))


세개의 숫자 중에서 가장작은 숫자는?

(a<b?:a:b)<c?:(a<b?:a:b):c 으로 구하면 된다.


여러 숫자중에서 가장 작은 숫자는?
min이라는 변수를 하나 만들어 계속 비교하는식으로 해야한다


%나머지 연산자가 쓰일때

  1. 짝수, 홀수인지 확인할때 a%2 ==0 0이면 짝수

  2. 최소공약수 , 두개를 무언가가 만족할때를 구할때
    day%a==0, day%b==0 day는 a, b를 모두 만족할때 구한다


조건문, 반복문

for(){
	if()continue;
    	System.out.println(3);
}

if문을 만족한다면 continue를 실행하게 된다.
continue문은 다음반복으로 바로 진행한다 -> 즉 3은 출력되지 않는다.

if()
else if()
else

else if 문도 조건써줘야 한다.

switch(num){
	case 1: System.out.println(1);
    	case 2: System.out.println(2); break;
   	default: break;
}

break 문이 없는 case 1이 실행된다면 case2문까지 출력된다
break문 필수~


이중배열

배열선언

int [] arr = new int[크키];
int [][] arr = new int[크][기];

배열조회

	for(int i =0; i<arr.length; i++){
		for(int j =0; j<arr[i].length; j++){
    			System.out.println(arr[i][j]);
 	   }
 	 }

이렇게 행부터 쓰면 arr[0][0]부터 조회가 된다.


BufferReader, BufferWriter

-> 버퍼를 이용해 읽고 쓰는 함수
-> 버퍼를 활용하기에, 기존의 scanner, println 보다 빠르다
-> 받는 데이터가 String형으로 받기에, 형변환을 따로 해줘야한다
-> 데이터를 라인단위로 읽을 수 있다.

  1.  import java.io.BufferedReader;
     import.java.io.BufferedWriter;
     import.java.io.InputStreamReader;
     import.java.io.OutputStreamReader;
  2. throws IOException

    두가지를 해줘야 BufferedReader, BufferedWriter를 쓸 수 있다.

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String arr[]  = br.readLine().split(""); //라인단위로 읽은 후에, split으로 쪼개기
    
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    bw.write(i+k); //print대신에 write를 써주면 된다. 
    
    //flush(). close()는 반드시 필요 
    
    bw.flush(); //남은거 모두 출력하는 메소드 
    bw.close();
profile
기록장

0개의 댓글