전체 글 142

BOJ 1654: 랜선 자르기 [Python 3]

오늘의 문제는 랜선 자르기이다. 이 문제의 특징은, 랜선의 길이가 2의 31제곱-1까지 커질 수 있기 때문에, for문을 1부터 2의 31제곱-1까지 돌리면 시간 초과가 발생한다. 그렇기에 다른 방법을 사용해야 하는데, 이분 탐색을 통해 구현해보았다. 정답 코드이다. k,n=map(int,input().split()) data=[] for _ in range(k): data.append(int(input())) data.sort() minNum=1 maxNum=max(data) while minNum=n: minNum=mid+1 else: maxNum=mid-1 print(maxNum) 먼저 값들을 input 받고, 1부터 input 중 제일 큰 값 사이에 mid를 둔다. 이제 그 mid로 data에 있..

CSS #2: 클래스, 박스모델, 그리드, 미디어 쿼리

CSS의 다양한 기능들을 더 알아보도록 하자. 클래스 선택자, ID 선택자 a와 h1 태그들은 html에 기본적으로 주어진 태그들이다. 하지만 .saw 같은 'class'는 우리가 직접 만들 수 있다. class와 태그를 구별하기 위해 . (dot)을 사용하기로 하자. 이런 방식으로 어떤 클래스인지를 적어주면, class 안에 decoration이 반영된다. 하지만, #active와 같이 id 선택자 또한 존재한다. ID 선택자는 각 선택자마다 한번만 사용하는 것을 원칙으로 하며, 가장 빠르고 정확하게 꾸밈을 주는 선택자이다. 그렇기에, 태그 내에서, 태그 선택자와 클래스 선택자가 동시에 쓰였을 때 클래스 선택자가 반영되고, 클래스 선택자와 ID 선택자가 동시에 쓰이면 ID 선택자가 반영된다. 만약 같은..

BOJ 2661: 좋은수열 [Python 3]

오늘의 문제는 백트래킹 및 dfs를 이용한 문제인 좋은수열이다. def goodCheck(arr): for i in range(1,len(arr)//2+1): if arr[len(arr)-i:len(arr)]==arr[len(arr)-2*i:len(arr)-i]: return False return True def dfs(arr,idx): if idx==n: print(''.join(str(i) for i in arr)) exit() for i in range(1,4): if goodCheck(arr+[i]): arr.append(i) dfs(arr,idx+1) arr.pop() n=int(input()) dfs([],0) 직관적으로 문제를 풀면 된다. 1부터 3까지 넣어가면서, 해당 수열이 조건을 만족..

css #1: Selector, Declaration,Property

지난번에 HTML에 대해서 배웠던 내용을 정리해봤는데, 오늘은 CSS의 시작하면서 배운 내용을 정리해보려고 한다. 먼저 코드이다. Hwan's HTML world hello my name is Hwan Guten Tag, ich heisse Hwan Things We Are Going to Learn 1. HTML 2. CSS 3. JavaScript Ways of Saying Hello in Multiple Languages hi hola guten tag annyeong Google Here! What is 1+1? 우선적으로 CSS는 웹사이트를 꾸밀 때 사용하는 언어이다. 언어를 예쁘게 꾸미는 방법은 다양하다. 먼저, html 자체 기능을 사용하는 방법이다. html의 font 함수는 언어를 바꿀 ..

BOJ 14888: 연산자 끼워넣기 [Python 3]

오늘의 문제는 DFS를 통해서 푼 연산자 끼워넣기 문제이다. https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net n=int(input()) data=list(map(int,input().split())) cal=list(map(int,input().split())) answer=[] visited=[0]*(n-1) calList=[] for i in range(4): for j in range..

HTML 기본 함수 정리 <head, body, p...>

제대로 된 프로젝트를 만들기 위해서, HTML + CSS + JavaScript 공부를 하려고 한다. 먼저 내가 파일 안에 두가지 html로 만들어진 소스와 사진 한 장을 넣어놨다. Codes 각자 코드는 다음과 같다. Hwan's HTML world hello my name is Hwan Guten Tag, ich heisse Hwan Things We Are Going to Learn 1. HTML 2. CSS 3. JavaScript Ways of Saying Hello in Multiple Languages hi hola guten tag annyeong Google Here! What is 1+1? 1.html What is 1+1? 2.html 그리고 사진은 다음과 같다. html이란? 우리는..

BOJ 1697: 숨바꼭질 [Python 3, BFS]

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net BFS를 이용한 문제를 풀어봤다. import sys from collections import deque def bfs(): q=deque() q.append(n) while q: num=q.popleft() if num==k: print(loc[k]) break for i in (num-1,num+1,num*2): if 0

BOJ 9663: N-Queen [Python 3]

오늘의 문제는 Well-known Problem으로 평가받는 N-Queen이다. 국내외를 막론하고 각종 언어로 solution이 유튜브에서부터 다양한 검색사이트에 나열되어 있을 정도이다. https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 이 문제는 DFS를 통하여 구현하였다. n=int(input()) chessBoard=[1e10]*n ans=0 def dfs(idx): global ans if idx==n: ans+=1 return for i in range..

BOJ 26092: 수학적인 최소 공통 조상 [Python 3]

https://www.acmicpc.net/problem/26092 26092번: 수학적인 최소 공통 조상 첫째 줄에 정수 $a$와 $b$가 공백으로 구분되어 주어진다. $(1\leq a,b\leq 10^{12})$ www.acmicpc.net 오늘의 문제는 수학적인 지식 (공약수)를 이용하여 푸는 문제였다. 설명은 어려워 보이지만, 간단히 설명하면 가령 36이라는 수가 있다. 36의 약수는 1,2,3,4,6,9,12,18,36가 있다. 그렇기에 36의 부모 노드는 2 이상의 약수 중 제일 작은 2로 나눈 수이다. (18) 해당 법칙을 이용하여 계속 나타내면 36-> 18 -> 9 -> 3 -> 1 이런식으로 부모노드가 이어진다. def factorization(n): d=2 factors=[] whil..

BOJ 26217: 별꽃의 세레나데 (Easy)

간단한 수학적 계산을 요구하는 문제다. 출처: https://www.acmicpc.net/problem/26217 n=int(input()) answer=0 for i in range(1,n+1): answer+=(n/i) print(answer) 정답 코드입니다. 예제 2번 밑의 부연설명과 같게, 씨앗의 개수가 n개라면, 당연히 1회차에는 n개 중 1개의 씨앗을 뿌리는 확률은 1 (n/n)입니다. 2회차에는 1회차에 뿌린 씨앗이 아닌 다른 씨앗을 뿌려야 하기에, 이에 대한 확률은 (n-1)/n입니다. 그렇기에 위 수의 역수인 n/(n-1)개의 씨앗을 뿌려야 합니다. 위와 같은 방식으로 확률들의 역수들을 더해주면 됩니다.