CS/Baekjoon

[Algorithm] 백준 단계별로 풀어보기 - 단계 6

칸타탓 2019. 4. 16. 09:46

BaekJoon Oline Judge - Step 6

1152. 단어의 개수

앞 뒤 공백 꼭 고려하기!

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str = scan.nextLine();
		
		String word[] = str.split(" ");
		int cnt = 0;
		for(int i=0; i<word.length; i++) {
			if(!word[i].equals("")) {
				cnt++;
			}
		}
		System.out.println(cnt);
	}
}

 

2577. 숫자의 개수

그동안 사용했던 방법이 비효율적인 것 같아서 구글링해서 문자열 메소드를 사용해보았다.

valueOf, charAt을 이용함!

-0을 해주지 않았을 때 오류가 발생하여 찾아보았더니, -0을 해주지 않으면 문자로 인식한다고 한다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num1 = scan.nextInt();
		int num2 = scan.nextInt();
		int num3 = scan.nextInt();
		scan.close();
		
		String res = String.valueOf(num1*num2*num3);
		int su[] = new int[10]; //카운트할 배열

		//0을 빼주는 이유는 정수로 변환해야 하므로
		for(int i=0; i<res.length(); i++) {
			su[res.charAt(i) - '0']++;
		}
		for(int i=0; i<su.length; i++) {
			System.out.println(su[i]);
		}
	}
}

 

8958. OX 퀴즈

문자열의 길이 만큼 for문 돌리기

연속적으로 O가 들어오면 카운트 계속 증가시키고, X가 들어오면 카운트 0으로 초기화하기

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		
		int result[] = new int[num];
		for(int i=0; i<num; i++) {
			int count = 0, sum = 0;
			String score = scan.next();
			for(int j=0; j<score.length(); j++) {
				if(score.charAt(j) == 'X') {
					count = 0;
				} else count++;
				sum = sum + count;
			}
			result[i] = sum;
		}
		scan.close();
        
		for(int i=0; i<num; i++) {
			System.out.println(result[i]);
		}
	}
}

 

2920. 음계

배열이 오름차순, 내림차순인지 판단하여 출력하는 문제!

선택정렬 사용해서 카운트 증가하면서 풀었다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num[] = new int[8];
		int tmp,  count = 0;
		
		for(int i=0; i<8; i++) {
			num[i] = scan.nextInt();
		}
		scan.close();

		for(int i=0; i<7; i++) {
			for(int j=i; j<8; j++) {
				if(num[i] > num[j]) {
					tmp = num[i]; num[i] = num[j]; num[j] = tmp;
					count++;
				}
			}
		}
		
		if(count==0)
			System.out.println("ascending");
		else if(count==28)
			System.out.println("descending");
		else
			System.out.println("mixed");
	}
}

 

10039. 평균 점수

40점 미만일 때 40점으로 점수 바꿔주기.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int score[] = new int[5];
		
		for(int i=0; i<5; i++) {
			int input = scan.nextInt();
			if(input < 40) {
				score[i] = 40;
			} else
				score[i] = input;
		}
		scan.close();
		
		int sum = 0;
		for(int i=0; i<5; i++) {
			sum = sum + score[i];
		}
		
		System.out.println(sum/5);
	}
}