yeahzzz
archive
yeahzzz
전체 방문자
오늘
어제
  • 분류 전체보기 (164)
    • Language (41)
      • Python (12)
      • JAVA (21)
      • C&C++ (8)
    • Algorithms (25)
      • programmers (9)
      • study log (16)
    • Problems & Solutions (14)
    • Major (29)
      • Data Structure & Algorithm (14)
      • Linux(Ubuntu) (9)
      • Security (2)
      • Linear Algebra (4)
    • FE (44)
      • Web(HTML5, CSS, JS) (5)
      • React & TS (26)
      • 코딩일기 (10)
    • BE (1)
      • Node.js (1)
    • Pytorch (8)
    • Server (2)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yeahzzz

archive

Problems & Solutions

19941 햄버거 분배

2022. 8. 5. 20:14
package baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class b19941 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		
		String str = br.readLine();
		char[] arr = new char[N];
		boolean check[] = new boolean[N];
		
		for(int i = 0; i < N; i++) {
			arr[i] = str.charAt(i);
		}
		
		int count = 0;
		for(int i = 0; i < N; i++) {
			if(arr[i]=='P') {
				int startId = Math.max(i-K, 0);
				int endId = Math.min(i+K, N-1);
				for(int id = startId; id <= endId; id++) {
					if(arr[id]=='H' && !check[id]) {
						check[id] = true;
						count++;
						break;
					}
				}
			}
		}
		System.out.println(count);

	}

}

 

*char 배열 입력 받을 때 bufferedReader.readLine으로 한줄 전체 String으로 입력 받고

배열에 저장할 때 charAt 메소드로 char 형태로 저장시켜준다. 

 

그리고 Math.min / Math.max 메소드를 사용하면 while(id < N)과 같은 while문을 쓰지 않고도 범위를 0부터 N-1까지로 제한할 수 있다. 

 

**Math.min(a,b) : a와 b 중에서 더 작은 수 리턴

Math.max(a,b) : a와 b 중에서 더 큰 수 리턴. 

 

int count = 0;
		for(int i = 0; i < N; i++) {
			if(arr[i]=='P') {
				for(int id = i-K; id <= i+K; id++){
                    while(id < N){
                        if(arr[id]=='H' && !check[id]) {
						check[id] = true;
						count++;
						break;
					}
                    }
                    break;
                }
			}
		}

그러니까 이런 식으로 while문, if문을 여러개 쓸 필요도 없고 더군다나 이렇게 코드를 짜면 무한루프가 돈다. 어쩌면 당연한... 

 

'Problems & Solutions' 카테고리의 다른 글

10816 숫자 카드2  (0) 2022.08.05
1920 수 찾기  (0) 2022.08.05
7795 먹을 것인가 먹힐 것인가  (0) 2022.07.30
9095 1, 2, 3 더하기  (0) 2022.07.30
11441 합 구하기  (0) 2022.07.26
    'Problems & Solutions' 카테고리의 다른 글
    • 10816 숫자 카드2
    • 1920 수 찾기
    • 7795 먹을 것인가 먹힐 것인가
    • 9095 1, 2, 3 더하기
    yeahzzz
    yeahzzz

    티스토리툴바