코딩테스트/백준 17

[백준 20920] 영단어 암기는 괴로워

1. 링크 https://www.acmicpc.net/problem/20920 2. 문제 설명 (1) 문제 화은이는 이번 영어 시험에서 틀린 문제를 바탕으로 영어 단어 암기를 하려고 한다. 그 과정에서 효율적으로 영어 단어를 외우기 위해 영어 단어장을 만들려 하고 있다. 화은이가 만들고자 하는 단어장의 단어 순서는 다음과 같은 우선순위를 차례로 적용하여 만들어진다. 자주 나오는 단어일수록 앞에 배치한다. 해당 단어의 길이가 길수록 앞에 배치한다. 알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다 M보다 짧은 길이의 단어의 경우 읽는 것만으로도 외울 수 있기 때문에 길이가 M이상인 단어들만 외운다고 한다. 화은이가 괴로운 영단어 암기를 효율적으로 할 수 있도록 단어장을 만들어 주자. (2) 입력 첫째..

[COSE403] 3주차 연습 풀이와 설명 모음

1094. [S5] 막대기 # 1094 X = int(input()) sticks = [64, ] while True: if sum(sticks) == X: break else: shortest = min(sticks) sticks.remove(shortest) half = shortest // 2 sticks.append(half) sticks.append(half) if sum(sticks) - half >= X: sticks.remove(half) print(len(sticks)) 문제 설명이 좀 이해가 안 돼서 여러 번 읽어본 문제다. 다만 이해만 되면 그대로 옮기기만 하면 된다. 문제를 잘 읽자! 1769. [S5] 3의 배수 # 1769 X = int(input()) cnt = 0 def sw..

[COSE403] 2주차 연습 풀이와 설명 모음

5648. [S5] 역원소 정렬 # 5648** import sys nums = "".join(list(map(str, sys.stdin.readlines()))).split() # 입력 문제: re.split은 구분자 사이에 아무것도 없을 경우 빈 문자열이 들어감.. reverses = [] for i in range(1, int(nums[0])+1): reverses.append(int(nums[i][::-1])) #문자열 뒤집기: str[::-1] for j in sorted(reverses): print(j) # cnt, *nums = sys.stdin.read().split() # for i in range(int(cnt)): # nums[i] = nums[i][::-1] # nums = lis..

[COSE403] 1주차 연습 풀이와 설명 모음

천문동아리에서 백준 소모임이 생겼다... 정말 관측 빼고 다하는 동아리 같다. 백준 플레 친구가 집어주는 문제를 매주 풀기로 정했는데, 풀이와 그 당시의 생각을 기록해두고 싶어 이렇게 매주 문제를 풀고 블로그 글도 작성하고자 한다. 사용 언어는 Python이고, 가끔 nodejs 기반의 javascript도 사용할 예정이다. 11942. [B5] 고려대는 사랑입니다 console.log("고려대학교"); 정말 간단한 출력 문제. 그냥 언어에 맞게 출력하면 된다. 파이썬으로는 옛날에 풀었어서 이 문제만 js로 풀어봤다. 프로젝트 하면서 js 숙련도가 아직 많이 낮은 거 같아 백준을 js로 풀려고 계획 중인데, 아직 본격적으로 시도해보진 않았다ㅎㅎ.. 11718. [B5] 그대로 출력하기 # 11718 im..

[백준 10250] ACM 호텔

1. 링크 https://www.acmicpc.net/problem/10250 2. 문제 설명 (1) 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른..

[백준 2164] 카드2

1. 링크 https://www.acmicpc.net/problem/2164 2. 문제 설명 (1) 문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버..

[백준 2108] 통계학

1. 링크 https://www.acmicpc.net/problem/2108 2. 문제 설명 (1) 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. (2) 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다..

[백준 1253] 좋다

1. 링크 https://www.acmicpc.net/problem/1253 2. 문제 설명 (1) 문제 N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다. N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라. 수의 위치가 다르면 값이 같아도 다른 수이다. (2) 입력 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) (3) 출력 좋은 수의 개수를 첫 번째 줄에 출력한다. 3. 코드 #1253 import sys #입력 받기 N = int(sys.stdin.readline().strip()) A = list(m..

[백준 2018] 수들의 합

1. 링크 https://www.acmicpc.net/problem/2018 2. 문제 설명 (1) 문제 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다. 예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다. N을 입력받아 가지수를 출력하는 프로그램을 작성하시오. (2) 입력 첫 줄에 정수 N이 주어진다. (3) 출력 입력된 자연수 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수..

[백준 1920] 수 찾기

1. 링크 https://www.acmicpc.net/problem/1920 2. 문제 설명 (1) 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. (2) 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -2^31 보다 크거나 같고 2^31보다 작다. (3) 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 3. 코드 #1920 ..