Stay Hungry Stay Foolish

분류 전체보기 430

[SWEA] 1959. 두 개의 숫자열 (Python/D2)

[문제 링크] 👉  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com설명N 개의 숫자로 구성된 숫자열 Ai (i=1~N) 와 M 개의 숫자로 구성된 숫자열 Bj (j=1~M) 가 있다. 아래는 N =3 인 Ai 와 M = 5 인 Bj 의 예이다.Ai 나 Bj 를 자유롭게 움직여서 숫자들이 서로 마주보는 위치를 변경할 수 있다. 단, 더 긴 쪽의 양끝을 벗어나서는 안 된다.서로 마주보는 숫자들을 곱한 뒤 모두 더할 때 최댓값을 구하라. 위 예제의 정답은 아래와 같이 30 이 된다.[제약 사항]N 과 M은 3 이상 20 이하이다.  풀이리스트 중 길이가 짧은 것과 긴 것을 구분min_list = min(aList, b..

SWEA 2024.10.18

[SWEA] 1961. 숫자 배열 회전 (Python/D2)

[문제 링크] 👉  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 설명N x N 행렬이 주어질 때,시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라. [제약 사항]N은 3 이상 7 이하이다.  풀이1. 이중 리스트로 입력 받기 num_list = [] for _ in range(n): num_list.append(list(map(int, input().split()))) 리스트 컴프리헨션을 사용해서 입력 받는 방법num_list = [list(map(int, input().split())) for _ in range(n)]  2. 테스트 케이스 번호 출력print("#%d" %..

SWEA 2024.10.18

[SWEA] 1976. 시각 덧셈 (Python/D2)

[문제 링크] 👉  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 설명시 분으로 이루어진 시각을 2개 입력 받아, 더한 값을 시 분으로 출력하는 프로그램을 작성하라.(시각은 12시간제로 표시한다. 즉, 시가 가질 수 있는 값은 1시부터 12시이다.)  [제약 사항]시는 1 이상 12 이하의 정수이다. 분은 0 이상 59 이하의 정수이다.  풀이핵심은 12시간제로 표시하는 것이다. 주의할 점은 분이 60분을 넘기면 시도 같이 증가를 해줘야 한다.  첫 번째 시각의 시, 두 번째 시각의 시를 더하고 hour에 저장한다.첫 번째 시각의 분, 두 번째 시각의 분을 더하고 minute에 저장한다. minute이 60 이..

SWEA 2024.10.16

[TIL] 2024년 10월 16일

파이썬 출력 형식 1. 정수 출력 - %dprint("%d" %t)  2. 중괄호{ } print(f'#{t}', *result)   📜 작성한 게시글[SWEA 코딩테스트 21425] 👉 https://dev-cloud.tistory.com/293 [SWEA] 21425. += (Python/D2)[문제 링크] 👉 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZD8K_UayDoDFAVs설명 현재 x에 저장된 값은 A, y에 저장된 값은 B이다. 당신은 “x += y” 또는 “y += x” 연산을 원하는dev-cloud.tistory.com  [SWEA 코딩테스트 1945] 👉 https://dev-clo..

TIL 2024.10.16

[SWEA] 1284. 수도 요금 경쟁 (Python/D2)

[문제 링크] 👉  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 설명두 회사 A, B중 더 적게 수도 요금을 부담해도 되는 곳을 고른다. 수도 요금은 한 달동안 사용한 수도의 양에 따라 정해진다.A사 : 1리터당 P원의 돈을 내야 한다.B사 : 기본 요금이 Q 원이고, 월간 사용량이 R 리터 이하인 경우 기본 요금만 청구된다.하지만 R 리터보다 많은 양을 사용한 경우 초과량에 대해 1리터당 S원의 요금을 내야한다.한 달간 사용하는 수도의 양이 W 리터라고 할 때 요금이 더 저렴한 회사를 골라 그 요금을 출력하라.  풀이설명에 나온대로 구현하면 된다. 주의할 점은 B회사의 요금 계산에서 R 리터를 초과할 경우,..

SWEA 2024.10.16

[SWEA] 1945. 소인수분해 (Python/D2)

[문제 링크] 👉 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pl0Q6ANQDFAUq설명숫자 N은 아래와 같다.N이 주어질 때 a, b, c, d, e 를 출력하라. 풀이sol.1 a, b, c, d, e를 담을 배열을 생성한다.index = [0]*5  숫자가 1이 될 때까지 즉, 다 나눠질 때까지 반복한다. while num > 1: if num % 2 == 0: num //= 2 index[0] += 1 elif num % 3 == 0: num //= 3 index[1] += 1 ...2로 나눈 나머지가 0일 때(2로 나눠질 때) 몫을 n..

SWEA 2024.10.16

[SWEA] 21425. += (Python/D2)

[문제 링크] 👉 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZD8K_UayDoDFAVs설명 현재 x에 저장된 값은 A, y에 저장된 값은 B이다. 당신은 “x += y” 또는 “y += x” 연산을 원하는 순서대로 원하는 만큼 수행하여, x나 y 둘 중 하나 이상에 저장된 값이 N 초과가 되게 하려고 한다. 연산을 합쳐서 최소 몇 번 수행해야 하는지 계산하는 프로그램을 작성하라.  풀이이 문제의 핵심은 작은 수에 큰 수를 더하는 것이다.a가 더 작으면 a에 b를 더하고, b가 더 작으면 b에 a를 더한다. Solutiontest_case = int(input())for _ in range(test_case..

SWEA 2024.10.16

BOJ 10798번 : 세로읽기 (Python/수학/Bronze 1)

[문제 링크] 👉 https://www.acmicpc.net/problem/10798설명영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’가 있다.칠판에 붙여진 단어들이 주어질 때, 영석이가 세로로 읽은 순서대로 글자들을 출력하는 프로그램을 작성하시오. 총 5줄이지만 각 줄은 가변적이다.  Solutionletters = [input() for i in range(5)]for j in range(15): #행의 길이 for i in range(5): #열 if j

[TIL] 2024년 10월 15일

최대 공약수 구하는 방법두 수의 곱을 그 두 수의 최대공약수(GCD)로 나누면 최대공약수(LCM)가 된다.   파이썬에서의 몫 구하기 몫을 구할 때 '//'를 사용해야 double형이 아닌 int형으로 반환된다.  한 줄에 출력하고 싶을 때print(num, end = '') #공백 없이print(num, end = ' ') #공백 포함  자바 contains() 메서드data.contains("error1")  Java에서 문자열(String)이나 컬렉션(Collection)에 특정 요소가 포함되어 있는지 확인하는 메서드이다.위 코드에서, data에 "error1"라는 글자가 있으면 true, 아니면 false를 반환한다.  인텔리제이 단축키 - Extract Method (Ctrl + Alt + M)..

TIL 2024.10.15

BOJ 1934번 : 최소공배수 (Python/수학/Bronze 1)

[문제 링크] 👉 https://www.acmicpc.net/problem/1934설명A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소 공배수라고 한다. A와 B의 최소공배수를 구하라. 풀이sol.1for문으로 45000부터 1까지 일일이 검사한다. a와 b를 i로 나눈 나머지가 0일 때 몫을 a와 b에 다시 저장하고 결과값에 i를 곱해 누적한다. for문이 종료되면 a와 b의 곱을 다시 결과값에 곱하며 저장한다.   큰 수부터 탐색하는 이유for i in range(45000, 1, -1): if a % i == 0 and b % i == 0: 45000부터 1까지 거꾸로 탐색하는 이유는 최대공약수를 가능한 한 빨리 찾기 위함이다. 큰 수부터 ..

BOJ 2775번 : 부녀회장이 될테야 (Python/구현/Bronze 1)

[문제 링크] 👉 https://www.acmicpc.net/problem/2775설명아파트 a층 b호에 거주하려면 (a - 1)층의 1호부터 b호까지의 사람들 수의 합만큼 데리고 와야 한다.이 아파트는 0층부터 있고 1호부터 있다. 0층에는 i호 = i명이 사는데, 1호에는 1명, 2호에는 2명씩 산다는 말이다.모든 거주자들이 위 조건을 모두 만족하고 거주하고 있다고 했을 때 a층 b호에는 총 몇 명을 데리고 와야 하는지 출력해야 한다. 풀이2층 3호의 사람 수를 구해야 할 때 1호2호3호2층1명(1+3) = 4명(1+3+6) = 10명1층1명(1+2) = 3명(1+2+3) = 6명0층1명2명3명  0층은 사람 수가 일정하므로 먼저 0층의 3호까지의 사람 수를 저장한다.ho = [i for i in ..

BOJ 11721 : 열 개씩 끊어 출력하기 (Java/구현/Bronze 3)

[문제 링크] 👉 https://www.acmicpc.net/problem/11721설명 입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다.  풀이sol.1카운트 변수를 사용한다. for문에서 글자를 한 줄에 계속 출력하면서 카운트 값도 하나씩 늘린다. 카운트 값이 10이 되면 카운트 변수를 0으로 초기화하고 다음줄로 넘어가서 출력하도록 한다. length()문자열의 길이를 반환한다. charAt()자바에서 String 클래스에 포함된 메서드로, 문자열에서 특정 인덱스에 있는 문자를 반환한다. 이 메서드를 사용하면 문자열의 각 문자에 직접 접근할 수 있다.char ch = str.charAt..

BOJ 3009 : 네 번째 점 (Java/구현/Bronze 3)

[문제 링크] 👉 https://www.acmicpc.net/problem/3009설명 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.  풀이아래 사각형은 입력이 다음과 같을 때의 그림이다. 첫 번째 열은 x값, 두 번째 열은 y값을 의미한다.  5 55 77 5 어렵게 생각할 거 없이 x와 y값에서 중복이 없는 숫자를 출력하면 된다. sol.1첫 번째 수와 두 번째 수가 같으면 세 번째 수를 출력한다.첫 번째 수와 세 번째 수가 같으면 두 번째 수를 출력한다.첫 번째 수와 같은 수가 없으면 첫 번째 수를 출력한다. sol.2 - 삼항 연산자를 이용 Expression1이 true이면 Expression2를 반환하고, false이면 Expr..

BOJ 5086 : 배수와 약수 (Java/수학/Bronze 3)

[문제 링크] 👉 https://www.acmicpc.net/problem/5086설명두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.첫 번째 숫자가 두 번째 숫자의 약수이면 factor 출력첫 번째 숫자가 두 번째 숫자의 배수이면 multiple 출력첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니면 neither 출력두 수가 0이면, 프로그램을 종료한다. 풀이if { ...} else if { ...} else { ...}  Solutionsol.1import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedRea..