본문 바로가기

전체 글

(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..