본문 바로가기
코딩테스트

BufferReader,Writter. 기타 자료구조 활용법

by 임지혁코딩 2024. 8. 10.

현재 파이썬으로 한 문제를 풀고, 그 문제를 JAVA로 바꾸는 것을 진행중이다.

그러다 실버1정도의 난이도임에도 JAVA에서'만' 출력오류가 나는 것을 발견했다.

 

1. 입력받기

BufferReader br = new BufferReader(new InputStreamReader(System.in));

int N = Integer.parseInt(br.readLine()); // nextInt없음

 

2. 출력하기

BufferWriter bw = new BufferWritter(new OutPutStreamWriter(System.out)); //tt아니다..

 

<출력을 위한 객체 추가>

Stringbuilder sb = new StringBuilder();

sb.append("할일"), sb.append('\n') // 각 문자별 띄어쓰기

bw.write(sb.toString().trim()) // 마지막 한 줄 띄어지는 문제 해결! <trim>

 

Integer시는, bw.write(인트값)으로 바로 출력할 수 있다! 

write가 출력 시점이다

 

bw.flush()

bw.close() //닫아버리기 

 

사용 예시

import java.util.*;
import java.lang.*;
import java.io.*;

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        String[] firstLine = br.readLine().split(" ");
        int N = Integer.parseInt(firstLine[0]);
        int M = Integer.parseInt(firstLine[1]);

        // Scanner sc = new Scanner(System.in) ; 
        // int N = sc.nextInt();
        // int M = sc.nextInt();

        int [] Nlist = new int [N];

        String [] input = br.readLine().split(" ");

        for (int i = 0 ; i < N ; i ++)
            {
                Nlist[i] = Integer.parseInt(input[i]);
            }

        ArrayList<Integer> pluslist = new ArrayList<>();
        ArrayList<Integer> minuslist = new ArrayList<>();
        int maxdir = 0 ;

        for (int i = 0; i < N ; i ++ )
        {
                if (Nlist[i] >= 0 )
                {
                    pluslist.add(Nlist[i]);
                }
                else{
                    minuslist.add(Nlist[i]);
                }

            if(Math.abs(Nlist[i]) > Math.abs(maxdir))
                {
                    maxdir = Nlist[i];
                }
        }

      
        // 올바른 정렬 메서드 사용
        Collections.sort(pluslist, Collections.reverseOrder());
        Collections.sort(minuslist);

        int answer = 0 ;

        for (int i = 0 ; i<pluslist.size(); i += M)
            {
                if (pluslist.get(i) != maxdir)
                {
                    answer += pluslist.get(i);
                }
            }

        for (int i = 0 ; i<minuslist.size(); i += M)
            {
                if (minuslist.get(i) != maxdir)
                {
                    answer += Math.abs(minuslist.get(i));
                }
            }

        answer *= 2 ;
        answer += Math.abs(maxdir);

        bw.write(String.valueOf(answer));
        bw.flush();
        bw.close();

    }
} - 입력을 br.split(" " ) -> String [] 배열로 받아서, 사용한다 주로. 

readLine()으로 받음에 주의하라. -> 이걸 다시 split해서 쓰기도 한다. 

 

 

LinkedList

add,get으로 대부분의 일을 처리하고. Size()로 크기를 파악

 

Stack

Stack <Integer> mystack  = new Stack<>();

push,pop을 사용할 수 있고, pop하지 않고 보려면 peek()으로 확인만도 가능! //엿보기란 뜻

isEmpty()로 빈 값을, size()로 크기를 확인한다.

ArrayList 정렬

Arraylist를 정렬할때는,

Collections(util에 있다.) .

Collections(wantarraylist,Collections.reverseOrder()); 로 표현한다!! 

 

HashMap

0. 선언 -> HashMap<Integer,String> mymap = new HashMap<>(); 

1. 특정 key에, value를 넣으려면? mymap.put(index,value); //push도, add도 아니다. 

2. key값이 있나 보려면? mymap.containsKey(key값)

 

HashSet

 

0. 선언 -> HashSet<String> myset = new HashSet<>();

1. myset.add(원하는 값) -> 이건 add가 맞다. 

 

'코딩테스트' 카테고리의 다른 글

다익스트라  (0) 2024.08.09
CCW 알고리즘이란?  (0) 2024.07.08
deque를 쉽고 고급지게 쓰기 + 다각형 넓이 구하기 팁  (0) 2024.07.04
HEAPQ  (0) 2024.05.23
백트래킹  (1) 2024.05.17