프로그래밍

N+1개의 물건을 N개의 상자에 넣으면, 적어도 하나의 상자에는 두 개 이상의 물건이 들어간다. 오늘은 당연하면서도 다양한 곳에 적용할 수 있는 비둘기집 원리에 대해 알아보겠다. 증명 N+1개의 물건과 N개의 상자가 있을 때, 각 상자에는 한 개 이하의 물건만 들어가있다고 가정해보자. 각 상자에는 최대 1개의 물건이 있을 것이므로, 총 물건의 수는 많아야 N개이다. 그런데 N+1개의 물건이 있으므로, 이는 모순이다. 따라서 N+1개의 물건과 N개의 상자가 있을 때, 적어도 하나의 상자에는 두 개 이상의 물건이 들어간다. 귀류법을 이용해 쉽게 증명하였다. 귀류법이란 명제의 결론이 부정임을 가정했을 때 모순 발생함을 보여 명제가 참임을 증명하는 방법이다. 예시 한 반에 13명 이상의 학생이 있다면, 최소 2..
1보다 큰 자연수 N을 입력받았을 때, N 이하의 소수(Prime Number)를 모두 구하시오. 방법1: 하나씩 다 나눠보기 어떤 수가 소수인지 아닌지 판별하는 방법 소수(Prime Number)란 1과 자기 자신만 약수로 가지는 수로, 다시 말해 1과 자기 자신으로만 나누어 떨어지는 수이다. (단, 1은 소수가 아니다.) 그렇다면 특정 자연수 N이 소수인지 판별하려면 어떻게 해야 할까? 답은 어렵지 않다. 2부터 N-1까지의 숫자들로 나눠본 후, 나머지가 0인 경우가 하나라도 있으면 소수가 아닌 수이다. is_prime = True for i in range(2, N): if N % i == 0: is_prime = False break print("소수" if is_prime else "소수가 아님..
이 글은 웹 프론트엔드 개발 초보가 작성한 글로, 일부 잘못된 내용이 있을 수 있습니다. 이상하거나 잘못된 부분은 댓글을 통해 알려주세요! 필자는 현재 Friday라는 동아리에서 운영을 담당하고 있다. 그러던 어느 날 "우리 동아리만을 위한 블로그 페이지를 만들자!"라고 다짐하였고, 노션 API를 이용하여 노션에 글을 쓰면 사이트에서 글을 확인할 수 있는 구조로 제작하였다. 그러나 이 블로그는 큰 문제를 낳았는데... 우리 웹사이트가 느리다고? 그 문제는 바로 로딩 속도였다. 노션 API를 호출하는 시간이 너무 길어서, 길게는 3초 이상까지 길어지기도 했다. 심지어 동아리 구성원 중 한 분께서는 로딩을 기다리던 중 "아직 완성이 안됐나 보네요."라고 하셨다... 😱 어떻게 해결할 수 있을까? 노션과 관련..
문제 1부터 N까지의 번호를 가진 N명의 사람이 있다. 각 사람들은 1부터 N 사이의 임의의 수 Ci가 쓰여있는 카드를 한 장씩 가지고 있다. 사람들 간에는 총 M쌍의 친구 관계가 있다. 모든 친구 관계는 양방향이라서, a번 사람과 b번 사람이 친구라면 b번 사람과 a번 사람도 친구이다. 서로 친구 관계에 있는 두 사람끼리는 서로 들고 있는 카드를 원하는 만큼 교환할 수 있다. 모든 사람들은 각자가 들고 있는 카드에 적힌 수가 자신의 번호와 최대한 비슷하기를 원한다. 어떤 한 사람의 불만족도를 그 사람이 들고 있는 카드에 적힌 수와 그 사람의 번호와의 차이로 정의하고, 전체 불만족도는 모든 사람의 불만족도의 합으로 정의한다. 카드 교환이 적절하게 이루어졌을 때, 가능한 전체 불만족도의 최솟값을 구하라. ..
소프트웨어 마에스트로에서 프로젝트를 하면서 다크 모드를 적용해야 하는 일이 있었다. 우선 지금 진행 중인 프로젝트는 이른바 "태블릿 문제 풀이 플랫폼"인데, 자세한 설명은 추후 게시하려고 한다. 아무튼, 이 글을 쓰게 된 이유는 프로젝트의 특수성 때문에 다크 모드 구현에 신경 쓸 것들이 많았기 때문이다. 일반적인 다크모드 사실 Flutter의 MaterialApp은 darkTheme과 themeMode를 지정할 수 있기 때문에, 다크 모드를 쉽게 구현할 수 있다. MaterialApp( ... darkTheme: ThemeData.dark(), themeMode: ThemeMode.dark, ); 이렇게 하면 앱의 theme은 자동으로 기본 다크모드 테마로 변경된다. themeMode를 ThemeMode..
잘익은 망고쥬스
'프로그래밍' 카테고리의 글 목록 (5 Page)