4주차 (07월 13일)
목표
- 2회차에 풀던 <배열> 알고리즘 문제 1개 풀기배열>
- <스택,큐> 자료구조 내용 복습하기
- <스택,큐> 알고리즘 문제 2~3개 풀어보기
회고
- 알고리즘 <스택> 문제 백준 10828번 (난이도 : 실버4)스택>
해결 방법 : int형 배열을 생성해서 주어진 명령을 배열의 index를 이용해서 실행하도록 했다.
코드일부
int[] arr = new int[number];
int location = -1; // 배열의 index위치
String str;
for(int i = 0; i < number; i++){
str = sc.nextLine();
if(str.contains("push")){ // push가 입력되면 배열에 추가
String[] n = str.split(" ");
location++;
arr[location] = Integer.parseInt(n[1]);
}
}
- 알고리즘 <큐> 문제 백준 1966번 (난이도 : 실버3)큐>
해결 방법 : 맨 앞의 문서와 나머지 문서들의 중요도를 비교한 후 더 높은 중요도가 있을 경우 맨 앞의 문서를 맨 뒤로 보낸다. 맨 앞 문서의 중요도가 제일 높을 경우 맨 앞의 문서를 출력하고, count를 1 올린다.
코드일부
int count = 1;
loop:
while(!printer.isEmpty()){
document doc = printer.get(0); // 맨 앞에 있는 문서
for(int i = 1; j < printer.size(); j++){
if(doc.imp < printer.get(j).imp){ // 중요도가 높은 문서가 있을 경우
printer.remove(doc); // 맨 앞의 문서 삭제
printer.add(doc); // 맨 앞의 문서를 맨 뒤로 보낸다.
continue loop;
}
}
if(doc.loc == loc){ // 구하고자 하는 위치의 문서일 경우
break;
}
else{
printer.remove(0);
count++;
}
}
System.out.println(count);
- 스택 관련 한 문제는 풀다가 시간이 부족해서 다 풀지 못해서 다음 시간 전까지 풀어 봐야겠다.