Java構文とアルゴリズム(stack&queue 2)
24807 ワード
知るところ
Queue<Integer>queue=new LinkedList<>();
queue.peek() // 제거를 안하고 맨 처음 값
queue.poll() // 제거하고 맨 처음 값
queue.add(3) // 값을넣어준다.
// 보통 while문과 같이 사용
while (!queue.isEmpty()) {
// 사용
}
問題1(必ずやり直してください)
話題
解決策
if ‘(‘이면 stack에 push
else ‘)’이면 pop을 하고
if ) 레이저면 **[앞에 인덱스가 '('면 레이저]** -> stack 안에 ‘(‘ 개수를 count하고 answer+count 한다.
else ) 닫는 괄호이기 때문에 stack에 있는 것 1개를 빼주고 answer+1을 더해준다.
コード#コード#
public int solution(String str) {
int answer=0;
Stack<Character>stack=new Stack<>();
// String -> char[]
char arr[]=str.toCharArray();
for (int i=0;i<arr.length;i++) {
char s=arr[i];
if (s=='(') {
stack.push(s);
}
// 닫는 괄호
else {
// 레이저냐?
char prev=arr[i-1];
if (prev=='(') {
stack.pop();
answer+=stack.size();
}
else { // 마지막 막대기냐?
stack.pop(); // 닫아야 하기 때문에 pop 해주고 answer에는 1을 더해준다.
answer+=1;
}
}
}
System.out.println(answer);
return answer;
}
質問2(必ずやり直してください)
話題
コード#コード#
import java.util.*;
public int solution(int n, int m) {
int answer=0;
Queue<Integer>queue=new LinkedList<>();
for (int i=1;i<=n;i++) {
queue.add(i);
}
while (!queue.isEmpty()) {
// m-1개 뽑아서 뒤에 넣는다. // index역할을 대신한다.
for (int i=0;i<m-1;i++) {
queue.offer(queue.poll());
}
// 마지막 꺼는 빼고 없애준다.
queue.poll();
// 만약 1개만 남았으면 종료 ->
if (queue.size()==1) {
answer=queue.poll();
}
}
System.out.println(answer);
return answer;
}
質問です。
話題
したがって,キューのfor文ではfor Eachを用いる.
解決策
コード#コード#
class Patient {
int idx;
int value;
public Patient(int idx, int value) {
this.idx = idx;
this.value = value;
}
public int getIdx() {
return idx;
}
public void setIdx(int idx) {
this.idx = idx;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public int solution(int n, int idx, int[]arr) {
int answer=0;
// Queue에 저장할때 idx하고 그 값을 저장하자
Queue<Patient>queue=new LinkedList<>();
for (int i=0;i<arr.length;i++) {
Patient patient=new Patient(i,arr[i]);
queue.offer(patient);
}
while (!queue.isEmpty()) {
Patient patient=queue.poll();
int idxx=patient.getIdx();
int values=patient.getValue();
// 다시 for문 돌아서 만약 큰게 있으면
boolean check=true;
int next_idx=0;
int next_value=0;
for (Patient p1:queue) {
next_idx=p1.getIdx();
next_value=p1.getValue();
if (values<next_value) {
check=false;
queue.add(patient);
break;
}
}
// 출력
if (check) {
answer++;
if (idx==idxx) {
break;
}
}
}
System.out.println(answer);
return answer;
}
Reference
この問題について(Java構文とアルゴリズム(stack&queue 2)), 我々は、より多くの情報をここで見つけました https://velog.io/@sds1vrk/자바-문법-및-알고리즘-stack-queue-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol