UL :)
UL의 개발 블로그
UL :)
전체 방문자
오늘
어제
  • 분류 전체보기 (220)
    • 일상 (1)
    • 회고록 (7)
    • ChatGPT 아카이빙 (0)
    • PS(Java) (114)
      • 백준 (37)
      • 인프런 강의 문제 (77)
    • Web (69)
      • Spring (18)
      • JPA (7)
      • JSP (9)
      • HTML5 (12)
      • CSS (19)
      • HTTP (0)
      • 보안 (2)
    • Language (5)
      • Java (3)
      • JS (1)
      • Python (1)
    • Git, GitHub (4)
    • Settings (18)
      • IntelliJ (7)
      • Eclipse (2)
      • VSCode (3)
      • Android Studio (1)
      • VMware (2)
      • Mac (0)
    • Etc (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • @JoinColumn
  • SEQUENCE 전략
  • @RequestParam
  • ViewName반환
  • IDENTITY 전략
  • @Id
  • @ManyToOne
  • @Table
  • consumes
  • ReturnValueHandler
  • 동일성보장
  • HandlerMethodArgumentResolver
  • JPA
  • 요청헤더
  • @GetMapping
  • @PostMapping
  • produces
  • 엔티티 매핑
  • ORM
  • 영속성
  • 백준
  • TABLE 전략
  • argumentresolver
  • BOJ
  • 정렬
  • 1차 캐시
  • 영속성컨텍스트
  • HttpMessageConverter
  • EntityManagerFactory
  • @Column

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
UL :)

UL의 개발 블로그

PS(Java)/백준

[PS] 백준 10799번 쇠막대기

2022. 5. 30. 17:24

문제

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

 

풀이

스택을 사용하여 풀었다.

기본적으로 )는 무조건 push하고, )일 때 스택을 pop한다. stack.size로 잘린 막대 개수를 카운트한다.


1. (가 들어옴 →  stack.push

2. )가 들어옴 → 일단 stack.pop을 하고 charAt(i-1) 확인

( )이면 레이저로 잘린 것이므로 piece += stack.size
) )이면 막대하나의 끝이므로 앞에 (를 하나 없앰 piece++;

 

코드

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

public class Main {
	
	public static void main(String[] args) throws IOException{

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String s = br.readLine();
		Stack<Character> stack = new Stack<>();
		int piece = 0;
		
		for(int i=0; i<s.length(); i++) {
			char c = s.charAt(i);
			if(c == '(') {
				stack.push(c);
			}
			else if(c == ')') {
				stack.pop();
				int bc = s.charAt(i-1);
				
				if(bc == '(') {
					piece += stack.size();
				}else if(bc == ')') {
					piece++;
				}
			}
		}
	
		System.out.println(piece);
	}
}
저작자표시 비영리 변경금지 (새창열림)

'PS(Java) > 백준' 카테고리의 다른 글

[PS] 백준 1388번 바닥 장식  (0) 2022.07.06
[PS] 백준 11655번 ROT13  (0) 2022.06.03
[PS] 백준 10828번 스택  (0) 2022.05.25
[PS] 백준 11004번 K번째 수  (0) 2022.05.24
[PS] 백준 11652번 카드  (0) 2022.05.23
    'PS(Java)/백준' 카테고리의 다른 글
    • [PS] 백준 1388번 바닥 장식
    • [PS] 백준 11655번 ROT13
    • [PS] 백준 10828번 스택
    • [PS] 백준 11004번 K번째 수
    UL :)
    UL :)
    백엔드 개발자를 목표로 달리고 있습니다🔥

    티스토리툴바