https://www.acmicpc.net/problem/2563 문제 분석여러 x좌표와 y좌표로 겹치는 부분 제외 넓이 계산 -> 2차원 배열로 풀어보기도화지의 넓이는 100x100 이고, 색종이의 넓이는 10x10이고, 색종이의 수는 100 이하로 정해져 있다.도화지 상의 좌표를 그대로 인덱스로 활용하기 위해 101 크기의 2차원 배열로 지정해놓고, 색종이를 붙일 때마다 해당 영역(10x10)을 순회하면서 새로 덮는 지점만 카운트해주면 된다. 소스 코드 (⭕)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public c..
2023년 3월 6일에 작성됨 https://www.acmicpc.net/problem/8979 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net 문제 분석 각 국가마다 번호, 금, 은, 동 메달의 변수는 고정이므로 구조체를 이용하여 접근해본다. 소스 코드 (⭕) #include #include struct Medal// 각 국가의 번호와 메달 수를 담을 Medal 구조체 생성 { int country; int gold; int silver; int bronze; }; int main() ..
2023년 2월 21일에 작성됨 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 문제 분석 N개의 자연수 합이 최댓값이 되려면 1부터 2, 3, 4...까지 차례대로 더해준다. 1부터 n까지 더한 누적합이 s보다 커지게 되면, 커지기 직전의 가장 마지막에 더해준 자연수가 최댓값이 된다. 예를 들어 s=20이면, 1+2+3+4+5+6=21>20(커짐), 1+2+3+4+5=15 최댓값은 5가 된다. 소스 코드 (⭕) #include int main() { long long int S; long long int i = 1, sum = 0; scanf("%d", &S)..
2023년 1월 7일에 작성됨 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 문제 분석 대각선이 짝수번째인지 홀수번째인지에 따라 분수의 규칙이 달라진다. n번째 줄에는 n개의 분수가 있다. 대각선 라인이 짝수이면 분자가 오름차순, 분모가 내림차순이다. 대각선 라인이 홀수이면 분모가 내림차순, 분모가 오름차순이다. 즉, 입력되는 값이 몇 번째 줄의 몇 번째 위치인지 찾고 위에서 찾은 규칙을 적용해준다. 소스 코드 (⭕) #include int main() { int n, diff, top, bottom, line = 0, end = 0; // line은 대각선으로 그었을 때 ..
2023년 1월 1일에 작성됨 https://www.acmicpc.net/problem/23253 23253번: 자료구조는 정말 최고야 위 그림처럼 책이 쌓여 있으므로, 첫 번째 더미 - 두 번째 더미 - 첫 번째 더미 - 두 번째 더미 순으로 꺼내면 책 번호순으로 나열할 수 있다. www.acmicpc.net 문제 분석 더미의 교과서 번호가 하나라도 역순이 되는 경우 False가 된다. 입력받은 번호는 더미의 밑에서부터 차례대로 나타낸 것이기 때문에 만약 한 구간이라도 오름차순이 된다면 교과서를 순서대로 꺼낼 수 없으므로 No를 출력한다. 소스 코드 (⭕) import sys input = sys.stdin.readline n, m = map(int, input().split()) check = Tru..
2022년 12월 31일에 작성됨 https://www.acmicpc.net/problem/5426 5426번: 비밀 편지 선영이는 남자친구를 위해 연애 편지를 썼다. 선영이는 편지가 남들에게 읽히는 것을 막기 위해서 편지를 암호화하려고 한다. 먼저, 편지의 내용을 정사각형에 작성한다. 그 다음, 시계방향으로 www.acmicpc.net 문제 분석 암호화된 문자 길이의 제곱근은 정사각형의 한 변의 길이가 된다. 따라서 원래 내용을 구할려면, 암호화된 문자 길이의 제곱수만큼 나누어진 각 구간의 끝 문자부터 차례대로 출력하면 된다. RSTㅡEEOㅡTCP eedARㅡBtVroㅡlsiesㅡuAoReㅡerles EarSㅡvyeqㅡeBsuㅡneMa TOPSECRET RosesAreRedVioletsAreBlue S..
2022년 12월 27일에 작성됨 https://www.acmicpc.net/problem/13301 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net 문제 분석 직사각형 둘레의 길이의 합은 바로 직전의 정사각형 둘레와 전전의 정사각형 둘레의 합과 같다. 따라서 타일이 1개와 2개인 경우에만 따로 둘레 길이를 4와 6으로 설정해주고 이후부턴 전과 전전의 합으로 둘레의 길이를 구할 수 있다. 소스 코드 (⭕) n = int(input()) d = [0]*81 # d의 81개의 요소를 전부 0으로 채움 d[0] = 4..
2022년 12월 26일에 작성됨 https://www.acmicpc.net/problem/17358 17358번: 복불복으로 지구 멸망 (2,1,4,3), (3,4,1,2), (4,3,2,1) 총 3가지 경우가 가능하다. www.acmicpc.net 문제 분석 쉽게 예를 들어 1, 2, 3, 4, 5, 6번의 6개의 컵이 있다고 가정해보자. 1번 컵이랑 어느 컵의 위치를 바꿀지 5개의 경우의 수(2, 3, 4, 5, 6)가 있다. 1번과 6번을 택한다고 하면 남은 컵은 2, 3, 4, 5번 컵이 있다. 2번 컵이랑 어느 컵의 위치를 바꿀지 3개의 경우의 수(3, 4, 5)가 있다. 2번과 4번을 택한다고 하면 남은 컵은 자동으로 3번과 5번이 된다. 따라서 컵이 6개일 때의 경우의 수는 5 * 3 * ..
2022년 12월 16일에 작성됨 https://www.acmicpc.net/problem/2057 2057번: 팩토리얼 분해 음 아닌 정수 N이 주어졌을 때, 이 수를 서로 다른 정수 M(M ≥ 1)개의 팩토리얼의 합으로 나타낼 수 있는지 알아내는 프로그램을 작성하시오. 예를 들어 2=0!+1!로 나타낼 수 있지만, 5는 이와 같은 www.acmicpc.net 문제 분석 큰 팩토리얼부터 살펴보면서 그 값이 n보다 작으면 변수 sum에 더해주고 크면 넘어가는 식으로 반복해서 누적합 sum이 n과 같아지는지 비교해본다. 소스 코드 (⭕) n = int(input()) # 1! ~ 20! 까지 값을 구함 fact = [1, 1] for i in range(2, 21): fact.append(fact[i-1]..
2022년 12월 6일에 작성됨 https://www.acmicpc.net/problem/9733 9733번: 꿀벌 각각의 일을 한 횟수와 비율을 공백으로 구분하여 출력한다. 출력은 {Re,Pt,Cc,Ea,Tb,Cm,Ex} 순서대로 하며, 비율은 소수점 둘째 자리까지 출력한다. 주어진 목록에 없는 일은 출력하지 않는다. 입력의 www.acmicpc.net ✍️자료구조 : 해시(Hash) 파이썬에서 해시(Hash)는 딕셔너리 자료구조를 통해서 제공한다. 해시를 언제 사용하면 좋을까? 1. 리스트를 쓸 수 없을 때 리스트는 list[1]은 가능하지만 list['a']는 불가능하다. 인덱스를 이용하여 원소에 접근하는데 인덱스가 숫자가 아닌 문자열, 튜플 등을 사용하려고 할 때 딕셔너리를 사용하면 좋다. 2. ..