본문 바로가기

알고리즘133

[백준 1531 투명][파이썬] https://www.acmicpc.net/problem/1531 --풀이 구현 문제 -> 2개의 for문을 돌면서 가로 세로를 다뤄야하는 문제라 익숙했다 다만 range에서 끝 모서리도 포함시켜줘야 하기에 +1을 해준점, index번호와 1개씩 차이가 나서 -1로 인덱스를 지정해 준점이 포인트 인것 같다! 2022. 5. 9.
[백준 10709 기상캐스터][파이썬] https://www.acmicpc.net/problem/10709 --정답 코드 --출력 초과 코드 피드백 구름('c')를 만나기 전에 있는 '.'을 처리하는 과정이 매끄럽지 못했다. 다른 풀이를 찾아보고 flag를 통해 구름('c')를 만나기 전 상황을 false로 false 이며 '.' 일 때 -1을 추가, false 상황에서 처음으로 구름('c')을 만났을 때, flag를 true로 변경하고 count(구름과 다음 구름이 나오기 까지의 거리로 생각하면 편하다)를 하나씩 올려준다 true인 상황에서 나오는 '.'들에 대해서 count로 계산해주고, n번째 구름이 등장하면, elif count=1로 초기화 하고 아무 처리도 하지 않는다 (어차피 0으로 초기 설정) 데이터 자체에 직접적으로 접근했다면,.. 2022. 5. 6.
[백준 8979 올림픽][파이썬] https://www.acmicpc.net/problem/8979 --풀이 마지막 for문 풀이 if data 안에 찾고자하는 index 번호와 같은 메달을 딴 나라가 있다면: -> 즉, 자기 자신도 data 안에 있기 때문에 포함됨. 그래서 같지 않을 경우에 else: print(q) 같은 조건이 필요 X print(q+1) -> index 번호에서 1을 더한 값을 출력(순위) ex 1) index로 찾고자 하는 값이 자신과 일치하여 출력되는 경우 input: 4 3 1 1 2 0 2 0 1 0 3 0 1 0 4 0 0 1 data=[ [1,1,2,0], [2,0,1,0], [3,0,1,0], [4,0,0,1] ] k -> 3 index=i=2 q=0 N/A q=1 data[2][1:]==data[1].. 2022. 5. 3.
[백준 1259 팰린드롬수][파이썬] https://www.acmicpc.net/problem/1259 --풀이 if word=='0'에서 0로 설정하여, 삽질을 해버렸다... data문을 안 거치고 else문 밑에서 더 간결하게 작성도 가능했었을 것 같다. 2022. 5. 2.
[백준 1181 단어 정렬][파이썬] https://www.acmicpc.net/problem/1181 --풀이 해결해야 할 포인트 1. 길이대로 정렬 2. 중복 제거 3. 알파벳 순으로 정렬 이었다. 그러나 sort를 활용하면 길이대로와 알파벳 순으로 정렬이 가능하다고 판단했다. 고민했던 포인트는 sort를 하는 순서인데, 먼저 알파벳 순서대로 먼저 sort를 한 후에, sort(key=) 을 통해 조건을 len으로 부여했고, 하나씩 출력하는 구조로 해결 완료! 2022. 5. 2.
[백준 11866 요세푸스 문제0][파이썬] https://www.acmicpc.net/problem/11866 --풀이 list구조로만 접근했더니, 각각의 인덱스로만 접근해서 데이터를 지우고, 또 데이터를 초기화 해주고 하기 버거웠다 collections의 deque라는 import를 사용하여 새로운 자료 구조를 통해 풀 수 있었다. 보통 큐(queue)는 선입선출(FIFO) 방식인 반면, 양방향 큐는 데크(deque) 라고 부른다 앞, 뒤 양쪽 방향에서 엘리먼트(element)를 추가하거나 제거할 수 있다 --참조 https://hongcoding.tistory.com/41 2022. 4. 27.
[백준 1205 등수 구하기][파이썬] https://www.acmicpc.net/problem/1205 --풀이 중복된 순위는 어떻게 하나요? 어차피 내림차순으로 정렬했기 때문에, [100,90,90,80] 이라고 한다면, 첫번째 90 -> 2등, 두번째 90 -> 3등으로 생각해도 80은 4등이다(수가 같다면 높은 순위로 계산한다는 로직이 일치) 만약 새로운 수와 같은 수가 리스트에 있어도, sort한 리스트에서는 새로운 수인지, 리스트에 있던 같은 값의 수인지 고려하지 않기 때문에, index+1한 값을 도출해도 정답이다 2022. 4. 25.
[백준 11170 0의 개수][파이썬] https://www.acmicpc.net/problem/11170 --풀이 빈 data에 append를 하는 형식은 메모리가 너무 크다. 그래서 str형으로 바꿔서 count를 통해 0을 세어줬다 !!!!!특정한 문자를 찾을떈 str형으로 변환해서 접근해보자!!!!! 2022. 4. 18.
[백준 14467 소가 길을 건너간 이유1][파이썬] https://www.acmicpc.net/problem/14467 --잘못된 코드 !!! 잘못된 코드입니다 !!! -> range문을 통해 첫번째 인덱스부터 비교를 시작해서, 3,1-> 3,0으로 바뀌었을 때, 이 로직이 계산이 불가능함. -> 그래서 데이터의 인덱스와, position에 같은 값을 지정하여 푸는 알고리즘으로 다시 구현함 --정답 코드 데이터를 만들어주고, 임의의 수로 채운다 target으로 하는 소의 번호와, 소의 위치를 나누어서 input을 받아준다(x 보다는 _으로 써도 좋을 것 같다) -만약 들어온 데이터가 -1이라면(처음 들어온 데이터라면), 그 소의 데이터를 -1이 아닌 input의 위치로 바꾸어준다. -그렇지 않다면(이미 이전에 위치가 지정되었다면), -- 만약 그 소의 위.. 2022. 4. 16.
[백준 2980 도로와 신호등][파이썬] https://www.acmicpc.net/problem/2980 --풀이 - if 문 설명 ex) n= 2 l= 10, d=3 r=5 g=5 첫번째 신호등은 3인 자리까지 왔을 때, count=3, 3%(5+5)는 5보다 같거나 작음(=아직 빨간불) 빨간불-> 초록불로 바뀌는 시간을 계산(5-3%(5+5))하고 count에 더 해줌 ex) n= 2 l= 10, d=5 r=2 g=2 앞의 예시에서 신호 받고 기다린 후의 count=3(첫번째 신호등의 위치)+2(빨간불 신호 대기)+2(5번칸에 위치한 신호등까지 이동)=7 7동안 rr,gg,rr,g까지 진행됨 7%(4) = 3>2(r) 임으로 그냥 지나감 p=5(2번째 신호등의 위치)이기에 10-5를 count에 더해, 12가 나옴 --생각회로 2022. 4. 13.
[백준 2960 에라토스테네스의 체][파이썬] https://www.acmicpc.net/problem/2960 --풀이 remove함수와 if문을 통해 가장 작은 값을 p로 지정하고 풀었더니 2의 배수를 다 지우고 나서 다음 과정 전개가 안돼서 다른 분의 코드를 참조하였고, 이해하기 쉽게 정리해보겠다. 1. 먼저 data에 True값을 가진 리스트를 n+1개 만큼 생성한 이유 -> 2부터 시작하는 숫자 리스트와 달리 우리는 0부터 시작하는 리스트를 만들어야함 -> 인덱스 번호로 비교하기 위함 ex) if data[2]==True부터 시작하게 될텐데, 만약 0부터 시작하지 않으면 data[2]는 3이나 4부터 시작하게 됨으로, 2에 대해서 로직에 적용시키지 못한다. False 값으로 0, 1 자리에 주고 [True]*(n-1)로 작성하셔도 무관한듯하.. 2022. 4. 12.
[백준 5800 성적 통계][파이썬] https://www.acmicpc.net/problem/5800 --풀이 문제의 포인트는 data의 input를 어떻게 가장 효과적으로 받느냐인 것 같다. 처음엔 2차원 리스트로 접근했다가, 다시 생각해보니 리스트를 한줄씩 받고, 원하는 과정을 처리해주면 좋을 것 같았다. 2022. 4. 11.