Baekjoon
-
백준 2110번 공유기 설치 (Java)Baekjoon 2021. 1. 27. 23:10
문제 링크는 여기이고 풀이에 대해서 정리를 해보겠습니다. 문제를 보았을 때, 집의 좌표가 10억까지 가능한 것을 볼 수 있습니다. 굉장히 큰 값이라 그냥 탐색으로는 안될 거 같고 이진탐색으로 해결을 해야 할 것 같습니다. 1. 입력 받기 처음에 입력은 정렬된 순서로 주지 않기 때문에 정렬을 해서 위와 같이 만들었습니다. 그리고 우리가 구해야할 것은 공유기를 설치할 수 있는 집 사이의 최대 거리이기 때문에 이진탐색으로 조건을 걸어서 탐색을 해보겠습니다. 집 사이의 최대거리는 9 - 1 = 8 입니다. 집 사이의 최소거리는 2 - 1 = 1 입니다. 위의 경우라면 집마다 거리가 1 ~ 8 사이일 것이고, 각 거리들 마다 문제에서 준 공유기의 개수만큼 설치할 수 있는지 여부를 판단해야 합니다. 그러면 최대 G..
-
백준 2164번 카드2 (Python, Java)Baekjoon 2020. 1. 20. 01:13
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리 www.acmicpc.net 풀이 : Deque를 쓰지 않고 그냥 풀면 시간초과가 발생한다. 카드1 문제는 아무렇게나 풀어도 맞았는데 이거는 시간초과가 발생하기 때문에..
-
백준 1181번 단어 정렬(Java)Baekjoon 2020. 1. 18. 05:46
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import java.util.*; public class WordSort{ public static void main(String[] args) { Scanner input = new Scanner(System.in); HashSet set = ne..
-
백준 뒤집힌 덧셈 1357번(Python, Java)Baekjoon 2020. 1. 17. 20:59
https://www.acmicpc.net/problem/1357 1357번: 뒤집힌 덧셈 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(X) = 1이다. 두 양의 정수 X와 Y가 주어졌을 때, Rev(Rev(X) + Rev(Y))를 구하는 프로그램을 작성하시오 www.acmicpc.net 문제를 처음 봤을 때는 파이썬으로 바로 풀 수 있을 것 같은데, 자바로는 쉽지 않겠다 라고 느끼면 문제를 풀었다. 풀이 : 입력을 문자열로 받은 뒤에 자리수마다 짜른 후에 거꾸로 저장을 하고 다시 int 로 형 변환 해서 덧셈을..
-
백준 베스트셀러 1302번(Python, Java)Baekjoon 2020. 1. 15. 21:09
https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 문제를 보자마자 이건 쉬울 것 같은데? 라고 생각했지만 쉽지 않았던 문제이다. ㅜㅠ 결국 풀지 못했다. 뭔가 알겠는데 파이썬과 자바가 살짝 어색해서 그런가 구현이 쉽게 되지 않았다. 1. 베스트 셀러 with Python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 books = {} for _ in range(i..
-
백준 1157번 단어공부(Python, Java)Baekjoon 2020. 1. 15. 18:07
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 이 문제를 처음 봤을 때 가장 먼저 떠오른 방법은 key, value를 이용하거나 아니면 그냥 리스트 2개를 만들어서 하나는 알파벳 count 용, 알파벳 저장용으로 만들어서 풀면 되겠다는 생각을 했다. 다행히 좀 비효율적인거 같지만 맞긴 맞았다. 1. 단어 공부 with Python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 name = input() name = ..
-
백준 1152번 단어의 개수(Python, Java)Baekjoon 2020. 1. 15. 16:12
https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다. www.acmicpc.net 문제를 보자마자 너무 쉽다고 생각을 했고, 단순히 공백문자만 처리를 잘 해주면 될 것 같아서 바로 풀기를 시작했다. 근데 나중에 더 쉬운 방법이 있을까 하고 검색을 해보다 보니 내가 정말 멍청하다는 것을 깨달았다. 1. 단어의 개수 with 파이썬 1 2 3 4 5 6 7 8 9 10 11 12 name = input() l = list(name...