본문 바로가기

분류 전체보기84

[리뷰] 그림으로 이해하는 시스템 설계 운이 좋게도 길벗 IT 리뷰어로 선정되어 책을 읽을 수 있는 기회가 생겼다. 최근 하는 프로젝트에서 시스템 설계를 할 일이 생겼는데, 시스템 설계란 무엇인지. 어떻게 해야하는지 감이 오지 않았었다. 그러나 이 책을 읽으니 희미하게나마 시스템 설계란 어떤 것이며, 설계는 어떻게 하고 설계서는 어떻게 쓰고 설계서 관리는 어떻게 해야하는지 알 수 있었다. 주요 내용1장 시스템 설계가 차지하는 위치2장 시스템 설계란?3장 시스템 설계에 영향을 주는 개념4장 전체 설계5장 입출력 설계6장 데이터베이스 설계7장 로직 설계8장 네트워크 설계9장 서버 설계10장 설계서 활용  전체적으로 시스템 설계 과정에 대해서 훑는다. 그러면서도, 요즘 많이 사용되는 MSA 구조를 사용할 때, 온프레미스 사내 서버가 아닌 클라우드를.. 2025. 2. 4.
[백준 2346] 풍선 터뜨리기 - python https://www.acmicpc.net/problem/2346 💡문제 분석 요약1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선이 있다. 각 풍선 안에는 종이가 하나 들어있고, 종이에는 -N보다 크거나 같고, N보다 작거나 같은 정수가 하나 적혀있다. 이 풍선들을 다음과 같은 규칙으로 터뜨린다.우선, 제일 처음에는 1번 풍선을 터뜨린다. 다음에는 풍선 안에 있는 종이를 꺼내어 그 종이에 적혀있는 값만큼 이동하여 다음 풍선을 터뜨린다. 양수가 적혀 있을 경우에는 오른쪽으로, 음수가 적혀 있을 때는 왼쪽으로 이동한다. 이동할 때에는 이미 터진 풍.. 2025. 1. 21.
[백준 24511] queuestack - python 💡문제 분석 요약💡코드from collections import dequeN=int(input())A = list(map(int, input().split()))B = list(map(int, input().split()))M = int(input())C = list(map(int, input().split()))answer=[]queuestack=[]for j in range(N): queuestack.append(B[j])for i in range(M): x = C[i] for j in range(N): if not A[j]: newx = queuestack[j] queuestack[j]=x x=newx .. 2025. 1. 21.
[백준 10837] 동전 게임 - python 💡문제 분석 요약영희와 동수는 동전 던지기 게임을 하고 있다. 이 게임은 K번 라운드로 구성되고 다음과 같은 규칙들을 따른다:한 라운드에서 영희와 동수는 한 번씩 동전을 던지고 항상 영희가 먼저 던진다.동전을 던져 앞면이 나오면 1점을 얻고, 뒷면이 나오면 점수를 얻지 못한다.한 명이 남은 기회에 모든 점수를 얻더라도 상대방이 현재까지 얻은 점수보다 작게 되면 게임 도중 어떤 시점에서도 게임은 바로 끝난다.0이상 K이하인 임의의 정수 M과 N에 대해서, 이것이 항상 게임이 끝난 후 영희와 동수가 얻는 점수가 되는 것은 아니다. 예를 들어서, K = 2인 경우에, M과 N의 모든 경우에 대해서, 이것이 영희와 동수가 얻는 점수가 될 수 있는 지의 여부는 다음 표와 같다:M N 영희, 동수의 점수가 될 가.. 2025. 1. 19.
[백준 2992] 크면서 작은 수 - python 💡문제 분석 요약문제정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다.수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 같다. 하지만, 123과 432는 구성이 같지 않다.입력첫째 줄에 X가 주어진다. (1 ≤ X ≤ 999999) X는 0으로 시작하지 않는다.출력첫째 줄에 결과를 출력한다. 만약 그러한 숫자가 없는 경우에는 0을 출력한다.💡알고리즘 설계permutations으로 해당 숫자들로 구성할 수 있는 모든 숫자의 조합을 구한다.내림차순으로 정렬한다.조합의 숫자들을 하나씩 순회하며, 기존 입력받은 숫자보다 작은 숫자가 있을 경우 그 이전 숫자를 프린트한다.💡코드from itertools .. 2025. 1. 17.
[백준 21921번] 블로그 - python 💡문제 분석 요약찬솔이는 블로그를 시작한 지 벌써 N일이 지났다.요즘 바빠서 관리를 못 했다가 방문 기록을 봤더니 벌써 누적 방문 수가 6만을 넘었다. 찬솔이는 X일 동안 가장 많이 들어온 방문자 수와 그 기간들을 알고 싶다.찬솔이를 대신해서 X일 동안 가장 많이 들어온 방문자 수와 기간이 몇 개 있는지 구해주자.입력첫째 줄에 블로그를 시작하고 지난 일수 N와 X가 공백으로 구분되어 주어진다.둘째 줄에는 블로그 시작 1일차부터 N일차까지 하루 방문자 수가 공백으로 구분되어 주어진다.출력첫째 줄에 X일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다.만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다.💡알고리즘 설계1일차부.. 2025. 1. 16.
[백준 1235] 학생 번호 - python 💡문제 분석 요약이번에는 학생들을 더욱 효율적으로 관리하기 위해 학생마다 고유한 학생 번호를 부여하기로 하였다. 학생 번호는 0부터 9 사이의 숫자로 이루어진 문자열로, 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같다.학생들의 번호를 부여해 놓고 보니, 김진영 조교는 어쩌면 번호가 지나치게 긴 것은 아닌가 싶은 생각이 들었다. 예를 들어 아래와 같은 7자리의 학생 번호를 보자.이름번호오민식1212345김형택1212356이동호0033445이처럼 학생 번호를 굳이 7자리로 하지 않고, 뒤에서 세 자리만을 추려서 남겨 놓아도 모든 학생들의 학생 번호를 서로 다르게 만들 수 있다.이름번호오민식345김형택356이동호445하지만 세 자리보다 적게 남겨 놓아서는 모든 학생들의 학생 번호를 서로 다르게.. 2025. 1. 16.
[백준 1246] 온라인 판매 - python 💡문제 분석 요약문제경래는 닭을 기르는데 올 겨울 달걀 풍년으로 함박 웃음을 짓고 있다. 그리고 이 달걀을 영양란으로 둔갑하여 옥션에 판매하려한다.경래는 총 N개의 달걀이 있고, 그의 잠재적인 고객은 총 M명이다. 그리고 각각의 i번째 고객은 각자 달걀 하나를 Pi 가격 이하로 살 수 있다고 밝혔다.경래는 영양란이라 속인 죄책감에 한 고객에게 두 개 이상의 달걀은 팔지 않기로 하였다. 하지만 위의 규칙 하에 수익은 최대로 올리고 싶기에 얼마로 팔지 고민하고 있다. 즉, A가격에 달걀을 판다고 하면 Pi가 A가격보다 크거나 같은 모든 고객은 달걀을 산다는 뜻이다. (물론 달걀 총 수량을 초과하여 팔 수 는 없다)문제는 이러한 경래를 도와 최대 수익을 올릴 수 있는 달걀의 가장 낮은 가격을 책정하는 것이다.. 2025. 1. 14.
[백준 15736] 청기 백기 - python 💡문제 분석 요약소프트웨어융합대학 학생회에서 주최한 소융체전에서 청기 백기 뒤집기 게임이 한창이다. 소프트웨어학부, ICT융합학부가 번갈아가면서 게임을 진행하는 중이다. 게임의 규칙은 간단하다. 게임을 진행할 차례인 학부에서 출전한 선수들 N명이 존재한다. 학생들의 앞 탁자에는 N개의 깃발이 청색이 위로 백색이 아래로 보이도록 놓여있다.이때 출전한 선수 중 첫 번째 선수는 N개의 깃발 중 1의 배수에 해당하는 번호의 깃발을 뒤집어 놓는다.다음 두 번째 선수는 N개의 깃발 중 2의 배수에 해당하는 번호의 깃발을 뒤집어 놓는다.i 번째 선수는 i의 배수에 해당하는 번호의 깃발을 뒤집고, N 번째 선수까지 진행하면 끝이 난다.그렇다면 이 게임에서 N 명의 선수가 참가하고 N개의 깃발이 존재할 때, N 번째 .. 2025. 1. 13.