현재 파이썬으로 한 문제를 풀고, 그 문제를 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 |