1. 첫번째 풀이(실패) 이 문제는 처음에 쉬워보여서 바로 시도하였으나, 런타임에러로 실패하였다. 처음에 제출한 코드는 다음과 같다. import sys input = sys.stdin.readLine n = int(input()) lst = [] for i in range(n): lst.append(input().strip()) lst = list(set(lst)) lst.sort() lst.sort(key = len) for i in lst: print(i) 실패 원인 sys.stdin.readLine() 함수를 사용하여 입력을 받을 때, 전체 입력을 한 번에 처리하기 때문. 입력이 많은 경우 처리 시간이 길어질 수 있다. 시간을 줄이기 위해서는 입력을 한 줄씩 처리해야 한다. 2. 두번째 코드(성공..
문제 설명 이 문제는 손님들을 온 순서대로 엘리베이터에서 호수까지 가깝게 층수가 h까지고 동수가 w까지인 호텔에 배치하는 것이다. 그리고 거리가 같을 때는 아래층을 선호하기에 1호 라인의 101부터 h층까지 순서대로 채우고 다 채우면 2호라인 순으로 나아가면 된다. 따라서 w는 고려하지 않고 입력받은 h와 n만을 이용하여 문제를 풀 수 있다. 풀이과정 효율적인 입출력을 위해 BufferedReader와 InputStreamReader를 통해 문자열 데이터를 입력 받는다. 이 과정을 위해서는 IOException 예외를 처리해준다. 문자열의 효율적인 처리를 위해 StringBuilder 객체를 선언한다. t를 입력받고 for문 안에 StringTokenizer 객체를 생성하여 공백을 기준으로 h, w, n..
문제 설명 직각삼각형이 되기 위한 조건은 주어진 세 변의 길이가 각각 x, y, z이고, 가장 큰 변의 길이를 x라고 했을 때, x^2 = y^2 + z^2(피타고라스 공식)이 성립하는 것이다. Scanner 대신 효율적인 방법을 풀어보기 위해 BufferedReader와 StringBuilder를 활용하였다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReade..
자바로 알고리즘 언어 변경.. 아직 파이썬, 자바 어느 하나 완벽히 못하기에, 파이썬과 자바 둘 다 하기보단 자바 하나를 확실하게 하자는 마음가짐으로 알고리즘 공부를 자바로 변경하였다. 그래서 브론즈 문제도 근근히 푸는 나이지만 다시 열심히 공부하겠다. 코드 코드는 전체 코드말고 부분씩 나누어서 살펴보겠다. BufferedReader, InputStreamReader import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throw..
코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // Scanner 객체 생성 int[] inputs = new int[8]; // 크기가 8인 정수형 배열 생성 for (int i = 0; i < inputs.length; i++) { // inputs 배열에 값 입력 inputs[i] = sc.nextInt(); // 사용자로부터 정수 입력 받음 } sc.close(); // Scanner 객체 닫기 String output = ""; // 출력 결과를 저장할 문자열 변수 초기화 for (int i = 0; i < input..
코드 import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // A에 대한 BigInteger 입력 받기 BigInteger A = in.nextBigInteger(); // B에 대한 BigInteger 입력 받기 BigInteger B = in.nextBigInteger(); // A와 B의 합 출력 System.out.println(A.add(B)); // A에서 B를 뺀 값 출력 System.out.println(A.subtract(B)); // A와 B의 곱 출력 System.o..