Stay Hungry Stay Foolish

분류 전체보기 423

BOJ 4999번 : 아! (Python, Java/구현/Bronze 5)

4999번: 아! 입력은 두 줄로 이루어져 있다. 첫째 줄은 재환이가 가장 길게 낼 수 있는 "aaah"이다. 둘째 줄은 의사가 듣기를 원하는 "aah"이다. 두 문자열은 모두 a와 h로만 이루어져 있다. a의 개수는 0보다 크거 www.acmicpc.net 설명 재환이는 집에서 자신이 얼마나 길게 "aah"를 낼 수 있는지 알아냈고, 자기가 소리낼 수 있는 길이의 "aah"를 요구하는 의사를 방문하려고 한다. 입력은 두 줄로 이루어져 있다. 첫째 줄은 재환이가 가장 길게 낼 수 있는 "aaah"이다. 둘째 줄은 의사가 듣기를 원하는 "aah"이다. 재환이가 낼 수 있는 "aah"의 길이와 의사가 요구하는 길이가 주어진다. 이때, 그 병원에 가야하는지 말아야하는지를 알아내는 프로그램을 작성하시오. 두 문..

[자바 기초] 01. 변수(Variable)

package(패키지) 패키지는 자바 파일을 구분하기 위한 폴더이다. 해당 패키지에 들어가는 자바 파일 첫줄에는 'package 패키지명;' 과 같이 소속된 패키지를 선언해주어야 한다. (보통은 자동으로 추가돼 있다.) 예제 1 - variable 이라는 패키지를 만든다. src(오른쪽 마우스 클릭) > New > Package 를 클릭하면 패키지명을 적으라는 창이 나온다. variable을 입력하고 엔터를 누르면 src 디렉터리에 variable 패키지가 생긴 것을 볼 수 있다. 예제 2 - variable 패키지에서 Var1 이라는 자바 클래스를 생성한다. src (오른쪽 마우스 클릭) > variable > New > Java Class를 클릭하면 클래스명을 적으라는 창이 나온다. Var1을 입력하..

BOJ 9498번 : 시험 성적 (Python, Java, C/구현/Bronze 5)

9498번: 시험 성적 시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오. www.acmicpc.net 설명 시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오. Solution Python score = int(input()) if 100 >= score and score >= 90: print('A') elif 89 >= score and score >= 80: print('B') elif 79 >= score and score >= 70: print('C') elif 69..

BOJ 1000번 : A+B (Python, Java/구현/Bronze 5)

1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 설명 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. Solution Python a, b = map(int, input().split()) print(a+b) Java import java.util.Scanner; public class Main { public static void main(String[] args) { int a; int b; Scanner sc = new Scanner(System.in); a = sc.nextInt(); b = sc.nextInt(); System.out.println(a+b); } }

BOJ 2935번 : 소음 (Python/구현/Bronze 3)

2935번: 소음 수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게 www.acmicpc.net 설명 학생들은 덧셈과 곱셈만 배웠다. 또, 아직 10의 제곱꼴을 제외한 다른 수는 학교에서 배우지 않았기 때문에, 선생님이 써주는 수는 모두 10의 제곱 형태이다. 숫자는 최대 100자리이다. 칠판에 쓰여 있는 문제가 주어졌을 때, 결과를 구하는 프로그램을 작성하시오. Solution a = int(input()) str = input() b = int(input()) if str == "*": print(a*b) else: print(a+b)

BOJ 5355번 : 화성 수학 (Python/구현/Bronze 2)

5355번: 화성 수학 겨울 방학에 달에 다녀온 상근이는 여름 방학 때는 화성에 갔다 올 예정이다. (3996번) 화성에서는 지구와는 조금 다른 연산자 @, %, #을 사용한다. @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산 www.acmicpc.net 설명 @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산자이다. 결과를 계산한 다음에, 소수점 둘째 자리까지 출력한다. 풀이 1. 문자열로 입력받기 2. 숫자만 실수형으로 변환하여 결과값에 넣기 3. 2번째 인덱스부터 문자열 길이까지 반복문을 통해 계산 '@'일 경우 결과값에 3을 곱한다. '%'일 경우 결과값에 5를 더한다. '#'일 경우 결과값에 7을 더한다. 4. %.2f 형식으로 소수점 출력 자릿수를 지정하고 결과값을 출력 ..

BOJ 11723번 : 집합 (Python/구현/Silver 5)

11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 설명 비어있는 공집합 S가 주어졌을 때, • add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다. • remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다. • check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20) • toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20) • all: S를 {1, 2, ..., 20} 으..

BOJ 3046번 : 삼각형과 R2 (Python/구현/Bronze 4)

3046번: R2 두 숫자 R1과 R2가 있을 때, 두 수의 평균 S는 (R1+R2)/2와 같다. 상근이는 정인이 생일 선물로 두 숫자 R1과 R2를 주려고 한다. 생일 파티에서 상근이는 정인이에게 이 두 숫자를 말해주고, 정인이는 www.acmicpc.net 설명 두 수의 평균 S는 (R1+R2)/2 이다. R2가 몇 인지 구하는 프로그램을 구현하라. 풀이 S = (R1+R2)/2를 변환하면 2S-R1 = R2 Solution r1, s = map(int, input().split()) print(2*s - r1)

BOJ 9655번 : 돌 게임 (Python/구현, DP/Silver 5)

9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 설명 돌 N개가 주어질 때, 두 사람(상근이와 창영)이 턴을 돌아가면서 돌을 가져간다. 돌을 1개 또는 3개 가져갈 수 있고, 마지막 돌을 가져가는 사람이 게임을 이기게 된다. (베스킨 라빈스 생각나네?) 게임은 상근이가 먼저 시작하며 두 사람이 완벽하게 게임을 한다고 가정하고, 이기는 사람을 출력한다. 풀이 1. 간단한 풀이 돌이 짝수일 경우 창영이가 무조건 이기는 게임이 되고, 홀수일 경우 상근이가 무조건 이기는 게임이 된다. 따라서 짝수일 때와 홀수일 때를 나누어 푼다. 2. 다이나믹 프로그래밍 알고리즘 적용 다른 풀이 참조(추후에 재풀이 후 설명 예정) Solution 1. ..

BOJ 5073번 : 삼각형과 세 변 (Python/구현/Bronze 3)

5073번: 삼각형과 세 변 각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오. www.acmicpc.net 설명 삼각형 세 변의 길이가 주어질 때 - Equilateral : 세 변의 길이가 모두 같은 경우 - Isosceles : 두 변의 길이만 같은 경우 - Scalene : 세 변의 길이가 모두 다른 경우 삼각형 조건을 만족하지 못하는 경우 "Invalid"를 출력(가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면) 풀이 1. while 문으로 입력값과 출력을 반복 2. 입력값을 리스트에 저장한 후 오름차순 정렬 조건문 1. 입력값이 모두 0이면 반복문 중단 2. 첫 번째 값이 두 번째와 세 번째 길이를 합한 것보다 크거..

BOJ 2164번 : 카드2 (Python/자료구조(큐)/Silver 4)

2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 설명 N장의 카드가 있는데, 한 장이 남을 때까지 다음과 같은 동작을 반복한다. 1. 제일 위에 있는 카드를 버린다. 2. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 위 과정을 반복하고 나면 한 장의 카드가 남게 된다. 그 수를 구해야 한다. 풀이 Queue 사용 1. 큐 생성 2. 1장이 남을 때 까지 버리고, 옮기는 과정을 반복 반복문에서 popleft()를 이용해 윗 장을 버린다. 첫 번째 카드를 append()를 이용해 맨 ..

[SWEA] 5162. 두가지 빵의 딜레마 (Python/D2)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 하나는 A원, 다른 하나는 B원의 빵이 있다. 현재 C원이 있을 때 어떤 빵이든 상관 없이 많은 개수의 빵을 살 수 있다. 두 종류의 개수를 다르게 혹은 한 종류의 빵만 사도 된다. 최대 몇 개의 빵을 살 수 있는가? 풀이 비교 연산자 사용 돈을 A와 B를 나눈 몫으로 비교를 해준다. Solution t = int(input()) for tc in range(1, t+1): a, b, c = map(int, input().split()) if c // a > c // b: print('#'+str(tc), c//a) else: print('#'+str(tc)..

SWEA 2023.11.19

[SWEA] 4466. 최대 성적표 만들기 (Python/D2)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 각 과목의 점수는 정수, 만점은 100점이다. 성적표에는 이 중에서 정확히 K개의 과목을 선택하여 넣을 수 있다. 성적표에 나타나는 총점이 가장 크도록 성적표를 만들어야 한다. 최대로 만들 수 있는 총점은 몇점인지 구해라. 풀이 리스트를 내림차순 정렬 후 반복문으로 k만큼 결과값에 넣어준다. Solution t = int(input()) for tc in range(1, t+1): n, k = map(int, input().split()) score = list(map(int, input().split())) ans = 0 score.sort(reverse=..

SWEA 2023.11.19

[SWEA] 2007. 패턴 마디의 길이 (Python/D2)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 반복되는 마디의 길이를 출력한다. 문자열의 길이는 30이고, 마디의 최대 길이는 10이다. 풀이 현재 문자와 같은 문자가 나오면 현재 문자부터 같은 문자가 나온 이전 위치까지와, 같은 문자가 나온 이후부터 2배 길이까지를 비교하여 같으면 단어의 길이를 저장한다. Solution t = int(input()) for tc in range(1, t+1): word = input() ans = 0 for i in range(len(word)): for j in range(i+1, len(word)): if word[i] == word[j]: if word[i:j-..

SWEA 2023.11.19

[SWEA] 1208. [S/W 문제해결 기본] 1일차 - Flatten (Python/D3)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 높은 곳의 상자를 낮은 곳에 옮기는 방식으로 최고점과 최저점의 간격을 줄인다. 제한된 횟수만큼 옮기는 작업을 한 후 최고점과 최저점의 차이를 반환한다. 제한된 횟수 전에 평탄화 작업이 완료되면 그 때의 최고점과 최저점의 차이를 반환한다. 풀이 min과 max를 쓰면서 반복한다. 1. 최고점과 최저점을 찾아 따로 저장한다. 2. 리스트에서 최고점과 최저점을 제거한다. 3. 제한됫 횟수가 됐거나, 끝나지 않았는데 평탄화가 됐다면(최고점과 최저점이 같아졌다면) 멈춘다. 4. 그게 아니면 최고점에서 1을 빼고, 최저점에서 1을 더한 후 리스트에서 넣어준다. 5. 마..

SWEA 2023.11.19