나를 기록하다
article thumbnail
[백준 1316 파이썬(python)/자바(java)] 그룹 단어 체커
Algorithm/baekjoon 2023. 6. 21. 19:24

1. 문제 접근 처음 이 문제를 보고 바로 풀지 못하였다. 정렬을 사용해야 하나? 라는 생각을 했지만, 정렬로는 떨어져서 나타나는 단어를 구할 수 없었기에 넘어갔고, 그 다음으로 입력을 배열의 형태로 받아서 각 단어를 비교하는 방법을 생각했지만, 그것 또한 아니었다. 그리고 생각한 결과, 문제는 의외로 간단하였다. 예를 들어, abcdef라는 단어가 있다고 가정하자. a와 b를 비교하여 두 단어가 다르다면, b부터 끝까지인 bcdef를 새로운 단어로 저장하고, bcdef 안에 a가 있는지를 확인하면 된다. 확인 후 a가 존재하지 않는다면 그룹 단어에 1을 더하고, a가 존재한다면 그 단어는 그룹 단어가 아닌 것이다. 2. Python n = int(input()) # 입력받을 문자의 개수 group_wo..

article thumbnail
[백준 1312 파이썬(python) / 자바(java)] 소수
Algorithm/baekjoon 2023. 6. 20. 20:13

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) 처음부터 다시 생각하여 실제로 나눗셈..

article thumbnail
[백준 1251 파이썬(python)/자바(java)] 단어 나누기
Algorithm/baekjoon 2023. 6. 19. 22:53

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등분을 할..

article thumbnail
[백준 1181 파이썬/python] 단어 정렬
Algorithm/baekjoon 2023. 6. 11. 23:24

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. 두번째 코드(성공..

article thumbnail
[백준 10250 자바/java] ACM 호텔
Algorithm/baekjoon 2023. 5. 26. 23:35

문제 설명 이 문제는 손님들을 온 순서대로 엘리베이터에서 호수까지 가깝게 층수가 h까지고 동수가 w까지인 호텔에 배치하는 것이다. 그리고 거리가 같을 때는 아래층을 선호하기에 1호 라인의 101부터 h층까지 순서대로 채우고 다 채우면 2호라인 순으로 나아가면 된다. 따라서 w는 고려하지 않고 입력받은 h와 n만을 이용하여 문제를 풀 수 있다. 풀이과정 효율적인 입출력을 위해 BufferedReader와 InputStreamReader를 통해 문자열 데이터를 입력 받는다. 이 과정을 위해서는 IOException 예외를 처리해준다. 문자열의 효율적인 처리를 위해 StringBuilder 객체를 선언한다. t를 입력받고 for문 안에 StringTokenizer 객체를 생성하여 공백을 기준으로 h, w, n..

article thumbnail
[백준 4153 자바/Java] 직각삼각형
Algorithm/baekjoon 2023. 5. 25. 23:34

문제 설명 직각삼각형이 되기 위한 조건은 주어진 세 변의 길이가 각각 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..

profile on loading

Loading...