1. 백준 풀기
https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
처음엔 for문을 이용하여 count를 사용하였는데 시간초과가 떠서, 블로그를 찾아본 결과 HashMap 자료구조를 사용하거나 이진탐색을 사용해야 시간안에 해결이 가능했다. 따라서 2학기 때 살짝 맛보기로 배워본 HashMap을 사용해보았다.
package Winter2021;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class baek10816_timeout {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int cardHow = Integer.parseInt(br.readLine());
String cc = br.readLine();
int [] Card = new int[cardHow];
String [] split = cc.split(" ");
for(int i=0;i<cardHow;i++){
Card[i]=Integer.parseInt(split[i]);
}
int player = Integer.parseInt(br.readLine());
String cc2 = br.readLine();
String [] split2 = cc2.split(" ");
int [] playerCard = new int[player];
for(int i=0;i<playerCard.length;i++){
playerCard[i] = Integer.parseInt(split2[i]);
}
HashMap<Integer, Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<cardHow;i++){
int key = Card[i];
map.put(key, map.getOrDefault(key,0)+1);
}
StringBuilder builder = new StringBuilder();
for(int i=0;i<player;i++){
int key = playerCard[i];
builder.append(map.getOrDefault(key,0)).append(' ');
}
System.out.println(builder);
}
}
https://www.acmicpc.net/problem/1874
1874번: 스택 수열
1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.
www.acmicpc.net
package Winter2021;
import java.io.*;
import java.util.Stack;
public class _difficult_baek1874 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int first = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
Stack <Integer>stack = new Stack();
int start = 0;
while (first>0){
int value = Integer.parseInt(br.readLine());
if(value>start){
for(int i=start+1;i<= value;i++){
stack.push(i);
sb.append('+').append("\n");
}
start = value;
}else if(stack.peek() != value){
System.out.println("NO");
return;
}
stack.pop();
sb.append('-').append("\n");
first--;
}
System.out.println(sb);
}
}
이문제는 이해하는데 어려움이 많았다. 좀더 공부가 필요할 것 같다!
https://www.acmicpc.net/problem/2161
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class baek2161 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int input = Integer.parseInt(br.readLine());
Queue<Integer> queue = new LinkedList<>();
for(int i=0;i<input;i++){
queue.offer(i+1);
}
List <Integer>list = new ArrayList<>();
while(!queue.isEmpty()){
list.add(queue.poll());
if(queue.isEmpty()){
break;
}
queue.offer(queue.poll());
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
}
}
중간에 break하는 부분이 없으면 오류가뜨는 문제였다. while범위를 잘 조절해야한다는 것을 느꼈다.
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class baek2839 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
if(a==4 || a==7){
System.out.println(-1);
}else if(a % 5 ==0){
System.out.println(a/5);
}
else if(a%5 == 1 || a%5==3){
System.out.println((a/5)+1);
}
else if(a % 5 == 2 || a % 5 == 4){
System.out.println((a/5)+2);
}
}
}
규칙성이 있음을 알게되어서 5를 기점으로 구분을 해보았다. 처음엔 쉬울 줄 알았는데 너무 어려워서 인터넷에 찾아보니 규칙성만 찾으면 쉽게 해결할 수 있다는 것을 알게 되었다.
2. HTML맛보기
사진을 넣는 법
단락 이동법
'2021동계방학_모각코' 카테고리의 다른 글
모각코 4주차 모임 활동결과(21.01.18 / 화요일 / 20:00~23:00) (0) | 2022.01.18 |
---|---|
이얏호 팀: 모각코 4주차 모임 목표(22.01.18 / 화요일 / 20:00~23:00) (0) | 2022.01.18 |
이얏호 팀: 모각코 3주차 모임 목표(21.01.11 / 화요일 / 20:00~23:00) (0) | 2022.01.11 |
모각코 2주차 모임 활동결과(22.01.04 / 화요일 / 20:00~23:00) (0) | 2022.01.04 |
모각코 1주차 모임 활동결과(21.12.28 / 화요일 / 20:00~23:00) (0) | 2021.12.28 |