본문 바로가기

전체 글

(261)
[백준] 2442 : 별 찍기 - 5 JAVA 풀이 N = 5일 때 (공백 N-1개) * (공백 N-1개) (공백 N-2개) *** (공백 N-2개) (공백 N-3개) ***** (공백 N-3개) (공백 N-4개) ******* (공백 N-4개) (공백 N-5개) ********* (공백 N-5개) 이런 식으로 출력하라는 문제인데, 별 뒤에 공백은 신경쓸 필요가 없다. 따라서 for문의 i를 1부터 N까지 반복하면서 N-1번 공백을 찍고 2*i-1번 *을 찍도록 코드를 구성했다. import java.io.*; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(..
[백준] 2441 :별 찍기 4 JAVA 풀이 1. N을 입력받는다. 2. 0번 공백을 출력하고 N번 *을 출력하고, 1번 공백을 출력하고 N-1번 *을 출력하는 식으로 반복되니 반복문을 사용해 i번 공백출력, N-i번 *출력 후 줄바꿈을 하도록 코드를 작성한다. import java.io.*; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); String star = "*"; String space = " "; for(int i=0;i
[백준] 11721 : 열 개씩 끊어 출력하기 JAVA 풀이 음...내가 좀 어렵게 생각한 것 같다. 1. 문자열을 입력받아 String 변수 str에 저장한다. 2. str의 길이를 len이라는 변수에 저장한다. (꼭 저장하지 않아도 되지만 코드의 가독성 때문에) 3. String.substring(첫 인덱스, 마지막 인덱스-1)를 사용해 10글자씩 잘라 출력한다. 만약 문자열이 25글자라면 인덱스 0~9까지 출력하고, 10~19까지 출력해야 하니 i*10부터 (i+1)*10-1까지 출력했다. 4. 입력받은 문자열의 길이가 10으로 나눠떨어지지 않으면 나머지 글자를 String.substring(첫 인덱스)로 출력한다. import java.io.IOException; import java.io.InputStreamReader; import java.io.Buf..
[백준] 11720 : 숫자의 합 JAVA 풀이 첫째 줄에 숫자의 개수 N이 입력되지만 그걸 사용하지 않아도 풀 수 있어서 따로 변수를 생성해 저장하진 않았다. getBytes()를 이용해서 br.readLine()으로 읽은 문자열을 byte 배열로 변환해줬다. for - each 구문으로 그 byte 배열을 한 바이트씩 읽고, 그 byte를 다시 정수로 바꾸기 위해 -'0'을 해서 sum에 더해 총합을 구했다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = ne..
[백준] 18870 : 좌표 압축 JAVA 풀이 N개의 숫자 중 자신보다 작은 숫자의 개수를 세고 출력하기만 하면 되나....했지만 잘보면 처음 입력되는 숫자 N개의 순서대로 출력해야 한다는 점이 좀 까다로웠다. N개의 숫자를 배열 arr에 저장하고, arr에서 중복되는 값을 제외하고 그걸 정렬한 값을 담은 새로운 배열 tmp를 만든 뒤에 두 배열의 값을 비교하면서 일치할 때마다 tmp의 인덱스(자기보다 작은 수의 개수)를 출력하려고 했지만 예상대로 시간초과가 됐다. 이걸 어쩌나 고민하던 중 해쉬맵을 알게 됐다. 해쉬맵은 키값과 데이터로 이루어져서 키값은 중복될 수 없지만 데이터는 중복될 수 있다. 이를 이용해서 다음과 같은 순서로 코드를 짰다. 1. arr라는 배열에 N개의 숫자를 저장한다. 2. tmp라는 배열에 arr배열을 복사해둔다. (처음 입..
[백준] 10814 : 나이순 정렬 JAVA 풀이 1. 회원 수 N을 입력받는다. 2. 공백 하나를 두고 나이와 이름이 입력되는데, 이를 2차원 스트링 배열에 저장한다. 3. 나이순으로 정렬한다. -> 나이가 같을 때의 조건을 추가로 정해두지 않으면 알아서 입력된 순서로 정렬된다. 4. 정렬된 2차원 배열을 출력한다. import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br..
[백준] 1181 : 단어 정렬 JAVA 풀이 1. 단어의 개수 N을 입력받는다. 2. N개의 단어를 입력받고, 그 단어가 처음 입력된 것이라면 ArrayList에 추가한다. -> 처음엔 일반 배열을 생성하고, 처음 입력된 단어일 때만 배열에 저장하려고 했다. 그러나 for문으로 하다보니 배열의 중간이 비는 상황이 발생해서 ArrayList로 변경했다. 3. 길이가 짧은 순으로 정렬하고 길이가 같으면 사전 순으로 정렬한다. import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.util.ArrayList; public class Main{ public static void main(String[] args)throws ..
[백준] 11651 : 좌표 정렬하기 2 JAVA 풀이 이전 문제에서 x와 y만 바뀐 문제다. y값을 기준으로 정렬하되 y값이 같다면 w값의 오름차순으로 정렬하면 된다. import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.util.StringTokenizer; import java.util.Arrays; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.re..