분류 전체보기 132

BOJ 15469: N과 M (1)

오랜만에 포스팅해봅니다! 휴가 및 격리 때문에 그동안 공부를 하지 못했네요 ㅠ 아직 백트래킹에 대한 내용을 아는 게 없었기에 각종 블로그 및 풀이들을 보고 결정했다. 물론 combination을 외부 라이브러리에서 사용할 수 있었지만, 이는 별로 교육적으로 도움이 되지 않을 것 같아서 이 방법은 사용하지 않았다. 내 풀이: 여기서 사용되는 d는 depth의 줄임말로, 몇 개의 수를 출력해야 하는 지를 담고 있다. solved라는 함수를 만들어서, 전 depth로 넘어가기 전에 result에 쓰이지 않는 수를 넣는 식으로 함수를 완성했다.

html+css 2일차: 웹의 기본 내용

저번 시간에는 html에 쓰이는 기본적인 태그들에 대해서 공부했었다. 오늘은 html의 기초적인 내용과, 웹에 대한 기본적인 배경 내용에 대해 다루어 보겠다. 첫째로, 내가 연습한 코드를 공개하겠다. 2생활관 baby들 최환짱 최환 박준서 이원재 박지승 네이버 롤체하고싶다 이 코드를 보고 오늘 공부한 내용들에 대해서 정리해보겠다. 첫째로, title 사이에 페이지의 전체적인 내용을 나타내는 제목을 적었다. 그리고 h1 사이에 소제목을 적고, 밑에 '최환짱'을 클릭하면 다른 페이지로 이끌어주는 링크를 만들었다. ordered list를 만들었다. 밑에 있는 list의 디자인을 문을 이용해서 만들었다. 글자의 크기랑, 정렬과, 링크에 있는 밑줄을 없애기 위해 text-decoration을 none으로 설정했..

BOJ 6064: 카잉 달력

오늘의 문제! 카잉 달력이다. 문제를 보자마자, 저번에 풀었던 문제 (https://www.acmicpc.net/problem/1476)와 굉장히 비슷하다고 느꼈다. 하지만, 절대 같지 않았다. 우선 오답코드부터 보자. n=int(input()) for i in range(n): n,m,ansX,ansY=map(int,input().split()) x=1 y=1 year=1 while True: if x==ansX and y==ansY: print(year) break if x==n and y==m: print(-1) break if x==n: x=1 else: x+=1 if y==m: y=1 else: y+=1 year+=1 이렇게 단순하게 하나하나 더하면서 구하면, 시간 초과가 뜨게 된다. 아쉽다....

html 1일차: 드디어 첫 시작

아직까지 c, java, python, 어셈블리 정도만 해봤었는데, 드디어 내 의지로 배우는 첫 번째 언어라고 할 수 있는 html!을 해보려고 한다. '생활코딩! HTML+CSS+자바스크립트'라는 책 으로 시작을 해보려고 한다. 근데 문제는, 여기서는 atom을 에디터로 쓴다. 하지만 옆에 있는 동기가 visual studio code로 쓰는 걸 추천해서, 이걸로 우선 연습해보려고 한다. 근데 정말 쉽고 재미있는 것 같다! 기본적으로 visual studio에서 html 파일 만들기부터 시작한다. 바탕화면에 새로운 폴더을 만들고, 그 이후에 vs code 왼쪽 상단에 있는 '파일'을 누르고, 방금 만든 폴더를 '폴더 열기'를 통해 만들어주면 된다. 그리고 그 이후에, 탐색기에서 '새 파일'을 선택해주면..

BOJ 3085: 사탕 게임

이제 지겨운 DP를 끝내고, 더욱 재밌어보이는(?) 브루트포스를 풀고 있다. 근데 어렵다...... 특히 구현하는 문제가 난이도가 높아보인다. 진짜 역대급이다. 왜이렇게 배열을 떠올리면서 문제를 푸는 것이 어려운지.... 다른 사람들의 코드를 보고 정리해서 써봤다. def check(arr): n=len(arr) answer=1 for i in range(n): count=1 for j in range(1,n): if arr[i][j]==arr[i][j-1]: count+=1 else: count=1 if count>answer: answer=count count=1 for j in range(1,n): if arr[j][i]==arr[j-1][i]: count+=1 else: count=1 if cou..

BOJ 1932: 정수 삼각형

다이내믹 프로그래밍 문제는 정말 많다....ㅠ 문제가 많은 만큼, 만들어 낼 수 있는 점화식도 정말 다양하고, 문제의 종류도 정말 많다. 그런 만큼, 더욱 열심히 문제를 풀어야겠다는 생각이 든다. n=int(input()) data=[] for i in range(n): data.append(list(map(int,input().split()))) dp=data dp[0]=data[0] for i in range(1,n): for j in range(i+1): if j==0: dp[i][0]=dp[i-1][0]+data[i][0] elif i==j: dp[i][j]=dp[i-1][j-1]+data[i][j] else: dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+data[i][j]..

BOJ 2156: 포도주 시식

오늘도 계속되는 dynamic programming! n=int(input()) data=[] for i in range(n): data.append(int(input())) dp=[0]*n dp[0]=data[0] if n>1: dp[1]=data[0]+data[1] if n>2: dp[2]=max(data[0]+data[2], data[1]+data[2], data[0]+data[1]) for i in range(3,n): dp[i]=max(dp[i-2]+data[i],dp[i-3]+data[i-1]+data[i],dp[i-1]) print(dp[n-1]) 이 문제에서는, 3번 연속으로 와인을 마시면 안된다. 그렇기에, 3개 이상의 와인이 시식 가능할 때, i-3 i-2 i-1 i i-3 i-2 i-..

BOJ 11057: 오르막 수 (+중복조합 야매)

하... 이 문제를 보고 참아버리지 못했다. 물론 지금 컴퓨터 공부를 하고 있지만, 수학적으로 문제를 봐버리고 나니 다른 해답으로 풀기가 싫어진다. 문제부터 보자. 이 문제를 보고 dynamic programming으로 풀까라는 생각이 1초정도 났지만, 바로 확률과 통계에서 나오는 중복조합 H가 생각났다. 딱 중복 가능한, 순서 따져야 하는.... 중복조합 아닌가! 이걸로 풀었다. import math n=int(input()) print((math.factorial(9+n)//(math.factorial(9)*math.factorial(n)))%10007) 하지만, 코더의 본분은 코딩이거늘... dp로 마지막 자리로 index 잡고, 하나씩 늘려주면 된다! 하하 수학 1승.!

BOJ 1699: 제곱수의 합

오늘도 다이내믹 프로그래밍 문제를 풀고 있다. 풀다 보니까, 이것도 다이내믹 프로그래밍이야? 라고 생각 하게 만드는 문제들도 정말 많다. 이 문제가 바로 이와 같은 경우다. https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 처음에 풀었던 내 잘못된 풀이이다. n이라는 수가 주어지고, 그 수보다 작은 제곱수를 빼면 된다고 생각을 했었다. from math import * n=int(input()) result..

카테고리 없음 2022.01.03

BOJ 11053: 가장 긴 증가하는 부분 수열

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 오늘의 문제다! 우선 실패한 코드부터 올려보려고 한다. n=int(input()) data=list(map(int,input().split())) streak=[1]*n pastScore=data for i in range(n): for j in range(0,i): if data[i] > pastScore[j]: st..