본문 바로가기

전체 글182

[백준- 1436 영화감독 숌][파이썬] -13일차 https://www.acmicpc.net/problem/1436 key point: while문으로 접근, 666을 str형으로 접근 -부르트포스 1. while 문 for문으로 접근하기엔 range 범위를 지정하기 힘들었고, 무한으로 돌리면서 원하는 조건이 나왔을 때를 노리자는 마인드로 접근함 2. str형 이 문제의 가장 키포인트였다. 666이 나오는 조건을 int형이 아닌 str형으로 생각을 돌리고, str형에 if something in str: 라는 형을 떠올렸고, 작은 수부터 모든 수를 돌리다가 666이 나오는 것마다 data에 더해주면, 별 다른 규칙을 주지 않아도 가장 작은 수부터 666이 들어간 숫자대로 정렬이 될것이고, 'n번째로 작은 종말의 숫자'가 되는 것이다! 만약 while에서.. 2022. 6. 7.
[프로그래머스- 예상 대진표][파이썬] -13일차 https://programmers.co.kr/learn/courses/30/lessons/12985 --잘못된 코드 실패 이유: if len ~ 부분에서 볼 수 있는 것 처럼, 8->4 는 되는데 4->2로 좁혀서 원하는 대진을 만나게 할 수가 없다 --> 뭔가 새로운 규칙이 있을 것 같아서 고민 후 다른 사람 코드를 참조했다 --풀이 번호(player 번호) 몫 나머지 합 1 1//2=0 1%2=1 1 2 2//2=1 2%2=0 1 3 3//2=1 3%2=1 2 4 4//2=2 4%2=0 2 5 5//2=2 5%2=1 3 6 6//2=3 6%2=0 3 7 7//2=3 7%2=1 4 8 8//2=4 8%2=0 4 1번, 2번은 다음 라운드에서 1, 3번, 4번은 다음 라운드에서 2, 5번, 6번은 다음.. 2022. 6. 7.
[백준- 1018 체스판 다시 칠하기][파이썬] -13일차 https://www.acmicpc.net/problem/1018 --풀이 어렵고 좋은 문제라 꼭 다시 풀어보자! 1. 8 X 8 범위만큼 x 와 y for문으로 나타내기 9*9 = (9-7) * (9-7) 로 4 10*10=(10-7)*(10-7)로 9 2. 규칙 찾기 0,0 0,1 0,2 0,3 1,0 1,1 1,2 1,3 2,0 2,1 2,2 2,3 3,0 3,1 3,2 3,3 두 좌표를 더한다 0(W) 1(B) 2(W) 3(B) 1(B) 2(W) 3(B) 4(W) 2(W) 3(B) 4(W) 5(B) 3(B) 4(W) 5(B) 6(W) 좌측 상단의 색 기준으로 짝수와 홀수가 일정한 규칙을 가지게 된다 그래서 짝과 홀을 if문으로 나누어주었고, W,B 기준으로 cnt를 달리해 주었다 3. min값 최.. 2022. 6. 7.
[프로그래머스 -[1차] 뉴스 클러스터링][파이썬] -12일차 https://programmers.co.kr/learn/challenges --풀이 key point: 자료 잔처리, Counter 1. 자료 잔처리 처음에는 9번~14번의 for문을 str1_1[i:i+2] 이런 식으로 접근했는데, if 조건이 첫 인덱스(각 문자열의 첫번째 문자)에만 걸리게 되어서, 각각을 비교하고 합쳐서 append 하는 형식으로 바꿨다. 특수문자와 숫자 제거는 isaplha()로 손쉽게 처리했다. 다중집합(원소의 중복을 허용)이기 때문에, set형태로 접근하지 못해서 고민하다가 시간을 다 날렸다.. 그 답으로 구글링해서 찾은 것이 counter 였다 2. counter 참조:https://velog.io/@godiva7319/%ED%94%84%EB%A1%9C%EA%B7%B8%EB.. 2022. 6. 6.
[프로그래머스 -오픈채팅방][파이썬] -11일차 https://programmers.co.kr/learn/challenges --풀이 코드 key point: dictionary 자료 구조 사용, change 커맨드에 대한 코드가 왜 필요 없는지 1. dictionary 자료 사용 이유 uid 기준으로 닉네임이 계속 바뀌기 때문에 dictionary로 접근해야지! 라고 생각함 key: uid, value: 닉네임 으로 정해두고 풀면 되겠다 싶었음 2. change와 leave에 대해서는 왜 아무 코드도 없을까? 사실 change 코드가 가장 까다롭게 다가왔다. replace를 써야하나 뭘 해야되나 고민도 했다. 어차피 uid에 따라서 아이디를 바꾸는 딕셔너리 구조이기 때문에, 같은 uid라면 닉네임이 바뀐채로 최신화 된다는 점이다 그래서 for문을 따.. 2022. 6. 5.
[프로그래머스- 약수의 개수와 덧셈][파이썬] -11일차 https://programmers.co.kr/learn/challenges --풀이 key point: range의 범위에 1씩 더해서 자기 자신도 나누어주어야 하는것, count=0의 위치(숫자가 바뀔 때마다 초기화 해줘야함) 2022. 6. 5.
[프로그래머스 -멀쩡한 사각형][파이썬] -10일차 https://programmers.co.kr/learn/challenges 유형: 수학 key point: gcd(최대공약수) 이해하고 수학 로직 이해하기 본인 풀이: 완벽하게 실패 -> 구글링(https://velog.io/@sem/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-LEVEL2-%EB%A9%80%EC%A9%A1%ED%95%9C-%EC%82%AC%EA%B0%81%ED%98%95-Python)_ 비슷한 패턴이 반복되고 있는 기준점이 w,h와 최대공약수였고, 이 점을 기준으로 직선이 지나는 사각형의 개수를 찾아보면, w+h - w와 h가 중복으로 세어지는 w와 h의 최대공약수 만큼을 빼준 값이 되었다. => w+h-gcd(w,h) 느낌: 어렵.. 2022. 6. 4.
[백준- 1476 날짜 계산][파이썬] -10일차 https://www.acmicpc.net/problem/1476 key point: 음수%양수 =1, 모두에게 공통되는 cnt가 올라갈때는 while 문을 쓰자! cnt= 연도, 연도에서 주어진 e,s,m의 값을 빼고 이 모든 3개의 요소들이 나누어 떨어지게 생각 ex) 1 16 16 만약 cnt=16이면 (16-1) % 15 ==0. (16-16) % 28 ==0, (16-16)%19 ==0 이다 2022. 6. 4.
[백준- 1075 나누기][파이썬] -10일차 https://www.acmicpc.net/problem/1075 key point: 뒷 자리를 1부터~~로 시작하면 01로 치환하기가 복잡해지니까 00 01로 접근을 시작하기 부르트포스 개념도 조금씩 익숙해진다 2022. 6. 4.
[백준- 7568 덩치][파이썬] -9일차 https://www.acmicpc.net/problem/7568 부르트포스 유형을 집중적으로 풀어보는 중이다 key point: rank 계산 ex) data=[ [55,185] , [58,183], [88,186], [60,175], [46,155] ] x=[55,185] 부터 y= 0번 1번 2번 3번 4번 인덱스를 순차적으로 돌다가, [88,186]에서 + 1 이 된다 또 x=[58,183]도 쭉~~ 같은 로직으로 돌게 된다 -> for 문에서 range을 안 쓴 이유: 자기 자신과 비교하면 조건에 걸리지 않아서, 관계가 없음 ex) x= [55,185] y=[55,185] 이어도 아무일이 일어나지 않는다는 의미 --> 숫자 자체에 접근해서 2개의 for문으로 자신보다 큰 덩치가 있으면 순위를 하.. 2022. 6. 3.
[백준- 2231 분해합][파이썬] -9일차 https://www.acmicpc.net/problem/2231 브루트포스 유형 -> 모든 경우의 수를 다 구해서 조건에 맞는 값을 판단해서 return 해주자 1부터 자기 자신까지 모든 경우의 수를 다 구해봐서 if문으로 찾고자 하는 경우의 수 찾기 break 없으면 min 값을 구하지 못함 2022. 6. 3.
[백준- 2798 블랙잭][파이썬] -8일차 https://www.acmicpc.net/problem/2798 - 부르브포스 유형 -> 무차별 대입, 조합 가능한 모든 경우들중에서 원하는 경우를 뽑는 경우 3개의 수를 뽑아서 경우의 수를 구하는 문제 -> combinations로 접근이 가능하지만, for문으로 풀어보자 커서를 3개라고 생각하고, 각각의 숫자를 하나씩 가리킨다고 생각해보자 [5,6,7,8,9] 이런식으로 있으면, 커서 1: 5 커서 2: 6 커서 3: 7 -> 8 -> 9 커서 1: 5 커서 2: 7 커서 3: 8 -> 9 커서 1: 5 커서 2: 8 커서 3: 9 key point: 앞선 커서보다 같거나 작은 수를 가리킬 수는 없다 -> for문의 range 범위를 i -> x= i+1 -> q=x+1 !! 마지막 for문의 범위.. 2022. 6. 2.