1. 문제 접근 처음 이 문제를 보고 바로 풀지 못하였다. 정렬을 사용해야 하나? 라는 생각을 했지만, 정렬로는 떨어져서 나타나는 단어를 구할 수 없었기에 넘어갔고, 그 다음으로 입력을 배열의 형태로 받아서 각 단어를 비교하는 방법을 생각했지만, 그것 또한 아니었다. 그리고 생각한 결과, 문제는 의외로 간단하였다. 예를 들어, abcdef라는 단어가 있다고 가정하자. a와 b를 비교하여 두 단어가 다르다면, b부터 끝까지인 bcdef를 새로운 단어로 저장하고, bcdef 안에 a가 있는지를 확인하면 된다. 확인 후 a가 존재하지 않는다면 그룹 단어에 1을 더하고, a가 존재한다면 그 단어는 그룹 단어가 아닌 것이다. 2. Python n = int(input()) # 입력받을 문자의 개수 group_wo..
1. 파이썬(Python) 1) 첫번째 풀이(오답) import sys input = sys.stdin.readline a, b, n = map(int, input().split()) x = a / b x = x * pow(10, n) y = int(x / 10) * 10 print(int(x-y)) 런타임 에러(OverflowError)가 발생했다. 찾아보니 파이썬은 소수점 15자리까지만 표시하기에 n이 15가 넘어가면 오류가 발생한다. 따라서 오류가 발생한다. 2) 두번째 풀이(정답) a, b, n = map(int, input().split()) for i in range(n): a = (a % b) * 10 result = a // b print(result) 처음부터 다시 생각하여 실제로 나눗셈..
1. Python 풀이 word = list(input()) answer = [] temp = [] for i in range(1,len(word)-1): for j in range(i+1, len(word)): a = word[:i] b = word[i:j] c = word[j:] a.reverse() b.reverse() c.reverse() temp.append(a+b+c) for piece in temp: answer.append(''.join(piece)) print(sorted(answer)[0]) 코드설명 python과 java를 함께 사용하여 문제를 풀이하니 python이 알고리즘 풀이에 있어서 얼마나 유용한지 새삼 느낀다. 입력부터 list로 받아와서 이중 for문을 이용하여 3등분을 할..
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..