문제땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B 출력첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 예제 나의 첫 번째 풀이A, B, V = map(int, input().split())height = 0day = Trueday_cnt = 1while height for문으로 모든 단계를 계산하는 방법을 생각했지만 시간 초과로 실패했다. 나의 ..
문제위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. 예제 나의 풀이n = int(input())rooms = 1cnt = 1while n > rooms: rooms += 6 * cnt ..
프로덕션 앱 심사 거절무려 3번의 리젝 끝에 드디어 정식으로 앱이 출시되었다.플레이스토어 심사 거절 사례와 해결 방법을 공유한다. 한 번 게시 검토를 신청하면 답변까지 보통 4일이 걸린다.나는 첫 게시 신청을 한 게 11월 15일이었고, 세 번의 리젝 끝에 프로덕션 앱이 출시된 게 11월 24일이었다. 리젝 사유는 이메일로 받기도 하고, 구글 플레이 콘솔 `정책 상태` 항목에서도 확인할 수 있다.리젝 사유는 인앱 경험 스크린샷까지 첨부해서 친절하게 알려주는 편이다. 첫 번째 리젝: 혼동을 야기하는 주장 정책 위반2024년 11월 15일 밤 11시에 처음으로 프로덕션 게시 신청을 했는데2024년 11월 19일 오전 9시에 리젝 메일을 받았다. 앱에 혼동을 야기하는 주장 관련 정책을 준수하지 않는 콘텐츠가..
[Flutter] S3 버킷에 업로드한 파일 삭제하기단일 객체 삭제 방법은 상단의 글을 참고하고, 이번에는 여러 객체를 한 번에 삭제하는 방법을 알아보자. Lambda 함수 생성import { S3Client, DeleteObjectsCommand } from "@aws-sdk/client-s3";const s3Client = new S3Client({ region: 'ap-northeast-2' });export const handler = async (event) => { // body에 JSON.parse 하면 에러 발생함 const { objectKeys } = event.body; if (!objectKeys) { return { statusCod..
문제상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다.외계 지형은 중앙 이동 알고리즘을 이용해서 만들려고 한다.알고리즘을 시작하면서 상근이는 정사각형을 이루는 점 4개를 고른다. 그 후에는 다음과 같은 과정을 거쳐서 지형을 만든다.정사각형의 각 변의 중앙에 점을 하나 추가한다.정사각형의 중심에 점을 하나 추가한다.초기 상태에서 위와 같은 과정을 한 번 거치면 총 4개의 정사각형이 새로 생긴다. 이와 같은 과정을 상근이가 만족할 때 까지 계속한다.아래 그림은 과정을 총 2번 거쳤을 때까지의 모습이다. 상근이는 어떤 점은 한 개 보다 많은 정사각형에 포함될 수 있다는..
화면을 아래로 당겨서 새로고침하는 기능을 구현해 보자. RefreshIndicatorreturn Scaffold( appBar: AppBar( title: const Text('교정 타임라인'), ), body: RefreshIndicator( onRefresh: () async { timelineController.refreshTimelineData(); }, child: const Column(), ),);`Scaffold`의 `body`의 최상위에 `RefreshIndecator` 위젯을 추가하고, `onRefresh`에 새로고침 했을 때 실행되길 원하는 코드를 추가한다. RefreshIndicator와 RefreshIndicator.adaptive의 차이점Re..
문제미국으로 유학간 동혁이는 세탁소를 운영하고 있다. 동혁이는 최근에 아르바이트로 고등학생 리암을 채용했다.동혁이는 리암에게 실망했다.리암은 거스름돈을 주는 것을 자꾸 실수한다.심지어 $0.5달러를 줘야하는 경우에 거스름돈으로 $5달러를 주는것이다!어쩔수 없이 뛰어난 코딩 실력을 발휘해 리암을 도와주는 프로그램을 작성하려고 하지만, 디아블로를 하느라 코딩할 시간이 없어서 이 문제를 읽고 있는 여러분이 대신 해주어야 한다.거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01)의 개수를 구하는 프로그램을 작성하시오. 거스름돈은 항상 $5.00 이하이고, 손님이 받는 동전의..
문제10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다. 출력첫째 줄에 10진법 수 N을 B진법으로 출력한다. 예제 풀이N, B = map(int, input().split())arr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"result = ''while N: result += str(arr[N % B]) N = N // Bprint(resul..
플러터에서 S3에 올린 오브젝트를 삭제하는 방법을 소개한다. [Flutter] S3 Presigned URL 발급받기 | AWS Lambda & API GatewayAWS Lambda랑 API Gateway를 설정하는 자세한 절차에 대해서는 이미 게시물을 올렸기 때문에 이번 글에서는 코드 위주로 간단하게 설명한다. Lambda 함수 생성import { DeleteObjectCommand, S3Client } from "@aws-sdk/client-s3";const s3Client = new S3Client({ region: 'ap-northeast-2' });export const handler = async (event) => { const bucketName = "YOUR_BUCKET_NAME"..
문제아직 글을 모르는 영석이가 벽에 걸린 칠판에 자석이 붙어있는 글자들을 붙이는 장난감을 가지고 놀고 있다. 이 장난감에 있는 글자들은 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’이다. 영석이는 칠판에 글자들을 수평으로 일렬로 붙여서 단어를 만든다. 다시 그 아래쪽에 글자들을 붙여서 또 다른 단어를 만든다. 이런 식으로 다섯 개의 단어를 만든다. 아래 그림 1은 영석이가 칠판에 붙여 만든 단어들의 예이다. A A B C D D a f z z 0 9 1 2 1 a 8 E W g 6 P 5 h 3 k x한 줄의 단어는 글자들을 빈칸 없이 연속으로 나열해서 최대 15개의 글자들로 이루어진다. 또한 만들어진 다섯 개의 단어들의 글자 개수는 서로 다를 수 있다. 심심해진..