Closed jongfeel closed 3 years ago
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
class Main {
static String inputString;
static int inputLength;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
inputString = br.readLine();
inputLength = inputString.length();
List<Integer> laserIndexes = new ArrayList<>();
Stack<Integer> leftSideIndexes = new Stack<>();
int answer = 0;
for (int i = 0; i < inputLength - 1; i++) {
String targetString = inputString.substring(i, i + 2);
if (targetString.equals("((")) {
leftSideIndexes.push(i);
} else if (targetString.equals("()")) {
laserIndexes.add(i);
} else if (targetString.equals("))")) {
int leftSideIndex = leftSideIndexes.pop();
int rightSideIndex = i;
long laserCount = laserIndexes.stream()
.filter(laserIndex -> laserIndex > leftSideIndex && laserIndex < rightSideIndex).count();
answer += (laserCount + 1);
}
}
System.out.println(answer);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
class Main {
static String inputString;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
inputString = br.readLine();
boolean[] isLaser = new boolean[inputString.length()];
Stack<Integer> leftSideIndexes = new Stack<>();
int answer = 0;
for (int i = 0; i < inputString.length() - 1; i++) {
String targetString = inputString.substring(i, i + 2);
switch (targetString) {
case "((":
leftSideIndexes.push(i);
break;
case "()":
isLaser[i] = true;
break;
case "))":
int leftSideIndex = leftSideIndexes.pop();
int laserCount = getLaserCount(isLaser, leftSideIndex, i);
answer += (laserCount + 1);
break;
}
}
System.out.println(answer);
}
private static int getLaserCount(boolean[] isLaser, int leftSideIndex, int rightSideIndex) {
int laserCount = 0;
for (int i = leftSideIndex; i < rightSideIndex; i++) {
if (isLaser[i]) {
laserCount++;
}
}
return laserCount;
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
class Main {
static String inputString;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
inputString = br.readLine();
boolean[] isLaser = new boolean[inputString.length()];
Stack<Integer> leftSideIndexes = new Stack<>();
int answer = 0;
for (int i = 0; i < inputString.length() - 1; i++) {
char firstTargetChar = inputString.charAt(i);
char secondTargetChar = inputString.charAt(i + 1);
if (firstTargetChar == '(') {
if (secondTargetChar == '(') {
leftSideIndexes.push(i);
} else {
isLaser[i] = true;
}
} else if (secondTargetChar == ')') {
int leftSideIndex = leftSideIndexes.pop();
int laserCount = getLaserCount(isLaser, leftSideIndex, i);
answer += (laserCount + 1);
}
}
System.out.println(answer);
}
private static int getLaserCount(boolean[] isLaser, int leftSideIndex, int rightSideIndex) {
int laserCount = 0;
for (int i = leftSideIndex; i < rightSideIndex; i++) {
if (isLaser[i]) {
laserCount++;
}
}
return laserCount;
}
}
String.substring()
은 새로운 String을 생성하기 때문에 성능상 문제가 생길 수 있다.
코딩 테스트 준비
- 백준 문제 풀이
어떤 문제를 풀 예정인지 적어주시면 좋을 것 같아요
1부 소프트웨어 스팩이란?(p24~p41)
마크 다운에 Discussion 중심으로 작성 -> 일단 노션에 작성 완료 향후 컨퍼런스 레포지에 PR을 날릴 예정[링크]
https://meet.google.com/jyx-mxnq-kpk
참여 방법:
Assignees에 자신의 github 계정을 self로 추가 2시간 분량의 할 내용에 대해 댓글 작성 (최소 모임 시작 전까지) 빛의 속도 혹은 (주말, 휴일 포함) 최소 3일 내에 구글 캘린더 등록 메일 확인 모임 시간에 각자 개발 관련된 공부 진행
모임 끝난 후 공부한 내용 정리 & 링크 추가 => 최소 다음 모각코 전까지 확인 가능해야 함.
주의: 회사일 혹은 마감 기한 임박한 일 처리의 경우는 최대한 자제해 주세요. 주말 아침에 일하면 우울하니까요. ㅜㅜ
Youtube 음악 재생목록:
음악 취향
강요공유를 위해 재생목록을 공유합니다. 자유롭게 추가해 주세요. https://www.youtube.com/playlist?list=PLBFc2T4S7JnvZrV92zSlOfqeYHj7-qJfB&jct=hkFSXgrr2X-4yldTm5iMtpqnGcjKRQ강요공유를 위해 노력해 주세요Special promotion
이번에도 20회 모임 달성 기념으로 스페셜 프로모션을 준비했습니다. 이번 모임 참석을 포함해서 4회 참석 달성하시면 스타벅스 까페 모카로 음료가 업그레이드 됩니다. 언젠가 까페 모카로 업그레이드된 음료를 받고 싶으신 분은 이번 모임에 참여해서 꼭 스탬프를 찍으시면 됩니다.