📌문제4 × 3 = 12이다.이 식을 통해 다음과 같은 사실을 알 수 있다.3은 12의 약수이고, 12는 3의 배수이다.4도 12의 약수이고, 12는 4의 배수이다.두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.첫 번째 숫자가 두 번째 숫자의 약수이다.첫 번째 숫자가 두 번째 숫자의 배수이다.첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 📌풀이입력받은 x와 y가 같다면 더 이상 입력받지 않고 반복문 종료1. y가 x로 나누어떨어진다면=첫번째 숫자가 두번째 숫자의 약수라면 -> factor2. x가 y로 나누어떨어진다면=첫번째 숫자가 두번째 숫자의 배수라면 -> multiple3. 둘다 아니라면 -> neither 📌코드while 1: x, ..
📌문제땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 📌풀이달팽이가 하루에 올라갈 수 있는 거리 A-B하지만 정상에 올라간 후에는 미끄러지지 않는다는 것 주의 만약 A=2, B=1, V=5라면1일차: 2까지 올라갔다 1로 내려오고2일차: 3까지 올라갔다 2로 내려오고3일차: 4까지 올라갔다 3로 내려오고4일차: 5까지 올라갔다 4로 내려옴마지막날 정상에 도달했다가 미끄러진다고 할 때 V-B 위치에 도달하지만 정상에 올라간 후에는 미끄러지지 않는다고 했으..

📌문제위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 📌풀이첫번째 레이어: 1두번째 레이어: 2~7(6칸)세번째 레이어: 8~19(12칸)네번째 레이어: 20~37(18칸) ...레이어가 증가할수록 각 레이어의 최댓값이 1+6*n 형태로 증가 입력받은 수가 현재 레이어의 최댓값 보다 크다면 nums에 6*cnt만큼 증가시키고 레이어도 한칸 증가만약 입력..
📌문제상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.외계 지형은 중앙 이동 알고리즘을 이용해서 만들려고 한다.알고리즘을 시작하면서 상근이는 정사각형을 이루는 점 4개를 고른다. 그 후에는 다음과 같은 과정을 거쳐서 지형을 만든다.정사각형의 각 변의 중앙에 점을 하나 추가한다.정사각형의 중심에 점을 하나 추가한다.초기 상태에서 위와 같은 과정을 한 번 거치면 총 4개의 정사각형이 새로 생긴다. 이와 같은 과정을 상근이가 만족할 때 까지 계속한다.상근이는 어떤 점은 한 개 보다 많은 정사각형에 포함될 수 있다는 사실을 알았다. 메모리 소모량을 줄이기 위해서 중복..
📌문제B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 📌풀이1. reversed() 함수를 사용해서 입력받은 문자열 n을 뒤집음(진법 계산 시 자릿수를 편리하게 처리하기 위해서)2. for문에서 숫자의 자릿수를 역순으로 탐색3. nums에서 해당하는 문자를 찾아 인덱스를 가져옴4. 진법 계산을 위해 b의 i제곱 수행 예시) 36진법 ZZZZZ를 10진수로 표현한다면35(Z)*36⁴ + 35*36³ + 35*36² + 35*36¹ + 35*36⁰ 📌코드n, b = input..

📌문제가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다. 📌풀이1. 크기가 100, 100인 2차원 배열 생성 후 0으로 초기화2. 색종이의 시작 좌표를 입력받은 후 가로 세로 +10 범위까지 2차원 배열의 값을 1로 설정 (단, 도화지 크기인 100, 100을 넘어간다면 break) (만약 여러장의 색종이가..
📌문제아직 글을 모르는 영석이가 벽에 걸린 칠판에 자석이 붙어있는 글자들을 붙이는 장난감을 가지고 놀고 있다. 이 장난감에 있는 글자들은 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’이다. 영석이는 칠판에 글자들을 수평으로 일렬로 붙여서 단어를 만든다. 다시 그 아래쪽에 글자들을 붙여서 또 다른 단어를 만든다. 이런 식으로 다섯 개의 단어를 만든다. 아래 그림 1은 영석이가 칠판에 붙여 만든 단어들의 예이다. A A B C D Da f z z 0 9 1 2 1a 8 E W g 6P 5 h 3 k x한 줄의 단어는 글자들을 빈칸 없이 연속으로 나열해서 최대 15개의 글자들로 이루어진다. 또한 만들어진 다섯 개의 단어들의 글자 개수는 서로 다를 수 있다. 심심해진 ..
📌문제N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오. 📌풀이a,b라는 일차원 배열을 미리 생성한줄씩 입력 받을 때마다 새로운 배열을 생성한 후 기존 일차원 배열에 append하여 2차원 배열 생성두번 반복하여 2차원 배열 a,b가 만들어지면 두 배열의 합을 구함 📌코드n, m = map(int, input().split())a, b = [], []for i in range(n): row = list(map(int, input().split())) a.append(row)for i in range(n): row = list(map(int, input().split())) b.append(row)for i in range(n): for ..
📌문제그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 📌풀이입력한 단어를 한글자씩 확인하면서 현재 문자가 다음 문자와 같다면 패스(연속된 문자)현재 문자가 다음 문자와 다르고, 현재 문자가 이후에 또 등장한다면 그룹 단어가 아니므로 -1count를 n으로 설정하여 그룹 단어가 아니면 하나씩 줄이는 방식 📌코드n = int(input())count = nfor i ..
📌문제알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다. 📌풀이입력 받은 단어와 리스트 슬라이싱을 사용해서 그 단어를 거꾸로 읽었을 때 값이 같으면 1 출력, 아니면 0 출력word="abcd"라면 word[::-1]="dcba"word의 처음부터 끝까지 역방향(왼쪽)으로 한칸씩 읽는다는 의미 📌코드word = input()if word == word[::-1]: print(1)else: print(0)