본문 바로가기

분류 전체보기

(26)
[C++] 백준 21740 도도의 수학놀이 내가 만든 문제지만 중간중간 함정도 있고 신경써야 할 부분도 많아 어려웠다. 일단 모든 수를 180도 회전시키고 생각을 해봐야 한다. 1. a+b 와 b+a 의 대소비교를 통하여 a와 b중 뭐가 앞에 와야하는 지 알 수 있다. bool cmp(string a, string b) {return a+b > b+a;} 우리가 봐야 하는 것은 두 숫자를 이어붙였을 때의 숫자이다. 따라서 문자열로 두고 a를 앞에 붙인 것과 b를 앞에 둔 것을 비교해서 정렬할 수 있다. 문자열로 비교해서 차이가 날 수 있지 않냐는 우려가 있을수 있지만 a+b와 b+a의 문자열의 길이는 같다. 따라서 a+b와 b+a의 대소비교는 int(a+b)와 int(b+a)의 대소비교와 똑같게 나온다. 2. 한 번 더 사용해야하는 수는 가장 큰..
[git] .gitignore 테크닉 vscode에서 cpp로 백준을 풀고 있는데 자꾸 tasks.json을 정의해 둔 .vscode가 변경에 떠서 화가 잔뜩 났다. 이를 해결하기 위해 gitignore에 대해 알아봤다. data.txt (파일 제외) data/ (디렉토리 제외) kk/data.txt (kk 아래위치의 data.txt 파일 제외) * (모든 요소 제외) !*.cpp (cpp확장자 파일을 제외에서 제외 = 보존) .cpp 파일을 제외한 모든 요소를 제외했다. * !*.cpp 하지만 더 화나는 일이 있었다. segtree 템플릿을 작성하기 위해 template 폴더 내에 만든 Segtree.cpp는 ignore되어있었기 때문이다. 그래서 이에 대해 찾아보니 해결법은 다음과 같았다. data/ (디렉토리를 제외한 경우 !을 이용해..
[codeforces] 701 div.2 후기 A. Add and Divide b 값을 1 늘리는게 이득이 아닐 때까지 b를 늘리고 그 후에는 a가 0이 될 때 까지 b로 나눠준다. B. Add and Divide dp[i]를 1에서부터 i번째까지의 변동 가능한 방법의 합으로 두고 dp[b] - dp[a]를 하면 쉽게 풀린다. 근데 그 쉽게를 못해서 망했다. C. Add and Divide b의 값을 고정시켜두고 amod b = t 를 변형하면 a = t(b+1)이 된다.결국에 식을 모두 전개해보면 1
[파이썬] 백준 15778 Yut Nori (윷놀이) 그냥 깡구현 문제인데 한번 꼬이면 답이 안보인다 ㅠㅠ 이번엔 내가 구현해 나가는 과정을 한 번 써 볼 것이다. 1. 판 그리기 pa = [ '..----..----..----..----..----..', '.. .. .. .. .. ..', '| \\ / |', '| \\ / |', '| \\ / |', '| .. .. |', '.. .. .. ..', '.. \\ / ..', '| \\ / |', '| \\ / |', '| .. .. |', '| .. .. |', '.. \\ / ..', '.. \\ / ..', '| \\ / |', '| .. |', '| .. |', '| / \\ |', '.. / \\ ..', '.. / \\ ..', '| .. .. |', '| .. .. |', '| / \\ |..
[파이썬] 백준 17215 볼링 점수 계산 먼저 규칙이 주어져있는데 굉장히 복잡하다. 0-1. 프레임은 총 10프레임이다. 0-2. 10프레임에 S나 P를 치면 추가기회가 있다. 1. 점수는 숫자, S, P, -로 들어온다. 2-1. S와 P를 치면 다음 기회에 얻은 점수만큼 추가점수가 있다. 2-2. 10프레임의 추가기회에는 추가점수가 주어지지 않는다. 대충 이정도만 알면 되는 것 같다. 일단 가장 처음 해야할 것은 문자를 숫자로 바꿔주기이다. 여기서 문제가 P처리인데 이전 인덱스의 점수 정보를 10에서 빼주면 쉽게 얻을 수 있 다. def getscore(a): if s[i] == 'S': add = 10 #if frame < 10: #plus.append(a+1) #plus.append(a+2) ---------------------- el..
[파이썬] 백준 9735 삼차방정식 처음에 문제를 보면 입력으로 주어지는 방정식은 정수 해를 적어도 한 개 갖는다고 나와 있다. 그렇다면 이 문제의 풀이로는 두 개를 생각할 수 있을 것 같다. 1. 극대극소를 찾아 구간을 나눈 후 최대 3개의 구간에 대하여 이분탐색을 진행하기 이런 함수가 주어졌다고 가정해보자 f'(x)를 구하여 극점들을 찾고 (-,극점1), (극점1,극점2), (극점2,+) 세 개의 구간에서 이분탐색을 진행하여 해들을 구해보려고 했지만 극댓값이나 극솟값의 좌표가 실수라면 근을 구할때 오차가 날 것 같아서 시도하지 못했다. 2. 정수해로 인수분해를 하여 이차식으로 만든 후 근의공식으로 구하기 이 방법을 사용하려면 정수해를 구해서 인수분해를 해야 하는데 우리가 옛날부터 해를 찾을 때 많이 썼던 방법이 있다. x = ±(D의 ..