# cote

24개의 포스트
post-thumbnail

[백준] 1316. 그룹 단어 체커

문제 바로가기 문제 풀이 > 현재 단어와 다음 단어를 비교했을 때 같으면 pass, 다르면 list에 저장되어있는지 확인 후 저장되어있지 않으면 append, 이미 저장되어 있으면 cnt-=1하고 break 정답 코드 다른 사람 코드 (optional) > string에 대해서 slicing으로 문자열 일부를 자른 후 그 안에 현재의 원소가 들어있는지 판단. in/not in은 반드시 list에서만 쓰는 것이 아닌 문자열에도 사용할 수 있다.

3일 전
·
0개의 댓글
·
post-thumbnail

[백준] 1107.리모컨

문제 바로가기 문제 풀이 >첫번째 코드를 구현할 때 각 자릿수를 누를 수 있는 버튼 중 그 차이가 가장 작은 값을 불러와서 정답을 내렸다. 그러나 테스트케이스7번과 같이 target channel보다 자릿수가 작은 경우가 답인 경우에는 오답이 발생했다. 해당 케이스를 따로 구현하려하다가 단순히 전체를 탐색했을 때 답을 구할 수 있음을 알 수 있었다. 정답 코드 첫번째 코드(unsolved) - about test_case7 두번째 코드(solved) 추가적인 개념 (optional) > 때때로 안 풀릴 땐 완전 탐색도 시도해보기 > EOF Error는 "End of File Error"의 줄임말로, 파일 또는 입력 스트림에서 더 이상 읽을 데이터가 없을 때 발생하는 오류를 나타낸다. M이 0일 때는 broken에 대한 입력이 발생하지 않는데 이 경우를 고려하지 않고 코드를 작성

7일 전
·
0개의 댓글
·
post-thumbnail

[백준] 1987.알파벳

문제 바로가기 문제 풀이 >bfs로 검색 -> 시간초과 발생 dfs로 풀이 -> 해당 위치에서의 방문 여부를 list로 구현하기보다 True/False로 구현하는 것이 더 편리, 이 때 ord()를 사용해서 그 idx를 파악했다. visited=[]로 리스트에 해당 문자가 존재하는지 여부를 파악하는 것을 조건문으로 걸었다. 이 때 반드시 방문이 끝날 때는 마지막 방문에서 더 이상의 움직임이 이뤄지지 않았으므로 방문처리를 취소한다.(pop(), or True->False) 이와 같은 방법은 시간초과가 발생했는데 list에 append하고 search하는 과정의 시간복잡도가 O(n)인 반면에 visited=[False]*26은 idx로 접근할 수 있기 때문에 그 시간복잡도가 O(1)이다. 정답 코드 추가적인 개념 (optional) > dfs에서의 순환함수 **가능한 모든 경

2023년 9월 13일
·
0개의 댓글
·
post-thumbnail

[백준] 1920.수 찾기

문제 바로가기 문제 풀이 > nums로 숫자 값을 받은 뒤 그 안에 들어있는지 탐색 그냥 단순 구현 : in nums로 check했더니 시간초과 발생 ( list 내의 모든 값을 서치하는 데에 시간이 오래 걸림 ) list에서의 탐색 함수의 시간 복잡도는 O(n) 이분탐색을 이용 : l,r값을 지정한 후 sorted(nums)에서 인덱스를 이용한 크기 비교를 통해 l, r 값을 업데이트하며 비교 -> 통과 set을 이용 : nums를 set로 받은 후 search할 때의 시간 복잡도 함수는 O(1)로 list에서의 탐색보다 훨씬 빠른 속도를 가짐 -> 통과 정답 코드 추가적인 개념 (optional) > set에서의 탐색 함수의 시간 복잡도는 O(1)로 list의 이분탐색보다 성능이 더 좋다. 각 함수의 시간 복잡도를 알고 최적의 함수를 이용하는 것이 골드 문

2023년 9월 5일
·
0개의 댓글
·
post-thumbnail

[백준]2529.부등호

문제 바로가기 문제 풀이 >인근에 위치한 부등식만 만족하는 조건 하에 하나씩 찾을 것, 이 때 시간을 최소화하기 위해 max값과 min값의 순서 배열 시작을 다르게 함 max=9876543210 min=0123456789로 시작 op로 부등호를 받은 후 idx값을 이용해서 하나하나 비교, 식이 성립하지 않을 때마다 배열의 앞뒤 값을 바꿔주며 while문을 반복한다. 부등식이 모두 만족하면 반복문을 중지하고 값을 출력한다. 정답 코드 추가적인 개념 > 다른 사람들도 비슷한 아이디어에서 시작했으나 코드의 간단 명료함이 다른 것이 아쉽다. sat변수를 이용한 while문의 중지말고 다른 방법이 있을지 알아보기

2023년 8월 22일
·
0개의 댓글
·
post-thumbnail

[백준] 1024.수열의 합

문제 바로가기 문제 풀이 >L개 이상의 연속된 수의 합으로 N을 나타내는 문제, L의 제한이 100이었으므로 하나하나 체크하는 것이 옳은 방법이라고 생각해서 while문으로 L이 100이 되는 순간까지 식을 반복했다. 식을 세우는 과정에서 약간 버벅임이 있었다. 정답 코드 추가적인 개념 (optional) > 풀이가 너무 난잡한 것 같다. N-sum 다른 사람 코드 참고했을 때 다들 비슷하게 수학적인 표현을 가지고 풀이를 진행하는 것 같다.

2023년 8월 3일
·
1개의 댓글
·
post-thumbnail

[백준] 1283.단축키 지정

문제 바로가기 문제 풀이 > 단순 구현, 조금 더 고차원 list를 다루는 데에 익숙했으면 쉽게 금방 풀이를 완료했을 수 있었을 것이다. 정답 코드 다른 사람 코드 >여기서 나는 word에 대해 list를 만들고 각 원소에 대해 다시 list를 만들어서 두 개의 for문으로 접근했다면 worda형태로 한 번에 접근 가능하도록 하는 것이 코드를 간편하게 만드는 데에 있어서 도움이 될 것이다.

2023년 7월 13일
·
0개의 댓글
·
post-thumbnail

[백준] 1697. 숨바꼭질

문제 바로가기 문제 풀이 >bfs순회로 경우를 찾되, 가장 작은 경우일 때를 출력한다. 최대 거리가 주어졌으니 해당 범위에 맞춰서 수를 미리 설정해둘 수 있다. 정답 코드

2023년 6월 10일
·
0개의 댓글
·
post-thumbnail

[백준] 1049.기타줄

문제 바로가기 문제 풀이 > prices 리스트를 정의하고 가능한 가격을 모두 append시킨 후에 min(prices)를 출력한다. 한 브랜드 내에서만 구매해야하는 줄 알았다. -> A브랜드 package + B브랜드 single로 구매해서 더 싼 경우 발생 여러 브랜드도 고려해서 구매. 기타줄 개수 맞춰서 6의 배수인 경우 min(packageprice)x몫, 아닌 경우에는 min(packageprice)x몫 + min(single_price)x나머지로 append -> 개수 맞춰사지 않고, 패키지로만 구매해서 필요한 기타줄보다 더 구매해도 싼 경우가 발생 (최종) 여러 브랜드 고려해서 기타줄 맞춰서 구매한경우 + 패키지로 구매한 경우 모두 고려해준다. 1번의 brand 입력에 대해서 (나누어 떨어질 때 패키지로 구매한 경우, 나누어 떨어지지 않을 때 패키지로만 구매한 경우,

2023년 5월 14일
·
0개의 댓글
·
post-thumbnail

[백준] 16235.나무 재태크

https://www.acmicpc.net/problem/16235 문제 풀이 > 일단 계절 별 구현 3차원 tensor 이용해서 풀이 각 나무의 나이를 리스트에 저장해서 햇수를 반복하며 실행 오답입니다 -> 5의 배수가 아닌 5 이상으로 알고 구현, 봄&여름에서 list에서 새로운 list를 이용했는데, remove를 여전히 사용하고 있어서 값의 변동이 있었다. 시간초과 -> 반복문 내에서 동시에 처리할 수 있는 것들은 동시에 처리 ex)봄과 여름, 가을과 겨울은 한 번에 처리할 수 있으므로 한 번의 for문에서 처리, list대신 deque를 사용해서 appendleft()이용 - sort를 매번 해주지 않아도 됨, pypy3로 제출하기..ㅎ 정답 코드 추가적인 개념 (optional) > 시간 단축할 때는 무조건 시간 복잡도 함수를 낮추는 것이 중요하다. 그러나 레벨이 높아질 수록 사소한 차이로 시간초과가 날 수 있다. 실버 때는 시간

2023년 5월 13일
·
0개의 댓글
·
post-thumbnail

[백준] 3649.로봇 프로젝트

문제 바로가기 문제 풀이 >- two pointer로 문제를 푸는 것이 익숙하지 않아서 itertools의 combination을 이용했다 -> 당연하게도 모든 경우를 확인하는 것이니 시간 초과가 발생 따라서 two pointer로 문제를 해결하려했다. sorted(list)에서 left, right를 지정하고 비교 대상과 크기를 비교해서 경우에 따라 left += 1, right -= 1로 값을 변화시키며 경우를 탐색하였다. testcase가 여러개 주어진다는 것은 확인했지만 실제 테케는 1개만 주어져있어서 처음엔 고려하지 못햇었다 (25%에서 오답처리) -> 여러가지 시도해보았으나 try,except 구문을 이용해서 해결했다. 정답 코드 추가적인 개념 (optional) > try-except 구문에 대한 이해 -> except에 error의 종류를 기재해서 특정 에러일 때 어떤 행동을 할지 결정할 수 있다. 이번 문제의 경우에는 EOFE

2023년 5월 13일
·
0개의 댓글
·
post-thumbnail

[백준] 2583. 영역 구하기

문제 바로가기 문제 풀이 >주어진 상자의 x,y 좌표를 이용해서 graph를 만들고 graph가 0일 경우에만 bfs를 실행해서 인접한 영역을 모두 방문처리 한다. 이 때 더 이동할 곳이 없으면 bfs를 종료하고 regions에 +1씩 추가하며 영역의 수를 구한다. bfs내에서 q에 append시킬 때마다 (인접한 영역을 1개 발견할 때마다) cnt를 +1씩 해주면서 해당 영역의 크기를 return한다. 정답 코드 추가적인 개념 (optional) > 마지막에 출력 형태를 맞출 때 join함수를 사용해서 띄어쓰기를 이용해서 list의 내용을 합쳐서 출력하자. ex) ''.join()은 ''안에 이어줄 문자를 넣어준다. 아무것도 안 넣으면 list의 내용 모두 이어서 출력. join()의 괄호에는 list 등의 sequence문자열을 넣어서 사용한다. > 좌표와 행렬의 표현 방

2023년 5월 7일
·
0개의 댓글
·
post-thumbnail

[백준] 1012.유기농 배추

문제 바로가기 문제 풀이 > bfs를 이용한 연결된 범위 탐색. 나는 visited와 graph를 따로 생각했는데 그냥 한 번에 생각해도되는 문제였다. bfs관련 문제들이 여전히 처음에 시작하는 것이 꺼려지지만 이전보다 많이 이해하고, 도전할 수 있어서 재미도 느끼고 있다. 정답 코드 추가적인 개념 (optional) > import sys를 통해 input = sys.stdin.readline.strip()으로 실행했을 때 런타임에러가 발생했는데 그 이유가 무엇일까? sys.stdin.readline은 python에서 input에서의 시간초과 문제 때문에 종종 사용했었다. -> 아마원인은 strip()에서 있었을 것 같다. 가장 오른쪽의 공백(줄바꿈)만 삭제해주면 에러가 일어나지 않을 것 같다. (아님 여전히 발생함. 이유가 뭘까...) ![](https://velog.ve

2023년 5월 6일
·
0개의 댓글
·
post-thumbnail

[백준] 11724.연결 요소의 개수

문제 바로가기 문제 풀이 > 그래프는 노드와 간선으로 이루어져있으며 서로 연결된 노드의 그룹 수를 출력하는 문제. 개념 자체가 어려워서 찾아보면서 문제 풀이 진행 dfs와 bfs 중 bfs의 개념 이해 (한 노드에 연결된 노드를 우선적으로 탐색) visited와 link list를 잘 활용할 줄 알아야함. 시간 초과 문제가 있을 수 있기 때문에 import sys, deque를 import해서 input(), popleft()를 사용 -> 시간을 단축시킬 수 있다. 정답 코드 추가적인 개념 (optional) > 자료구조의 그래프 단순히 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 자료 구조로 그래프 중 일부에 트리가 속한다. 정점(node) : 위치라는 개념 간선(edge) : 노드 간의 관계. 노드를 연결하는 선 (link라고도 부름) [노드와 간선 참고](https://gmlwjd9405.github.io/2018/08/13/data-st

2023년 5월 3일
·
0개의 댓글
·
post-thumbnail

[백준] 8979.올림픽

문제 바로가기 문제 풀이 > 국가의 금, 은, 동에 대해 매달 순으로 list.sort(key = x lambda : x = l[0]) 이런 식으로 배열한 후에 rank를 출력하면 되는 간단한 문제 라고 생각했으나 배열을 country.sort(key = lambda x : (x[3],x[2],x[1])) 위와 같이 짜버려서 메달 순서에 따른 list 나열이 잘못되었다. 그러나 예시 코드의 답이 다 맞았어서 오류 찾느라 정말 시간 소모가 많이 걸렸다.. 정답 코드 추가적인 개념 (optional) > country.sort(key = lambda x : (x[3],x[2],x[1])) 이처럼 어떤 list에 다양한 값을 갖는 원소가 있다면 특정 원소를 지정해서 sort할 수 있다. (key값을 이용해서) 이 때, 나열 순서도 정할 수 있다. ![](https://velog.vel

2023년 5월 3일
·
0개의 댓글
·
post-thumbnail

[programmers] lv.2 과제 진행하기

문제 바로가기 문제 접근 > plans 수 최대 1000개.. 그냥 단순 구현 진행하다가 멈추는 과제는 ing에 담고, 끝난 과제는 fin에 담아서 기록 현재 시간은 time_change를 통해 int값으로 정의 현재시간 + 걸리는 시간과 다음 과제 시작 시간을 비교하면서 fin,ing비교 만약 과제를 끝낸 현재시간과 다음 과제 시작 시간 간에 간격이 발생할 경우 ing.pop을 통해 하다만 과제를 다시 진행 (ing에는 [과목,남은시간]형태로 append해서 기록) 이 때 남은 시간을 update하며 저장했다. >단순하지만 구현에 있어서 시간이 오래 걸린 문제. 정답 코드 ![](https://velog.velcdn.com/images/jhyuny6/post/3b7dbda8-5a45-4d06-a1e8-80e49ea83a

2023년 4월 16일
·
0개의 댓글
·
post-thumbnail

[programmers] lv.2 디펜스 게임

문제 바로가기 문제 접근 > while로 접근 : 당연히 시간초과 heap 자료구조로 접근 (heap은 그 최솟값을 추출하기 용이) >heap 시간초과 : list로 되어있는 값의 sum, len을 이용해서 그 때 그 때 비교했는데 이 부분에서 시간이 미세하게 더 걸려서 초과 > 최대한 상수로 정의해서 풀이하기 정답 코드 자료구조 힙(heap) 우선 순위에 따라 데이터를 접근할 수 있는 자료구조로 최솟값, 최댓값에 빠르게 접근할 경우에 많이 사용됨, 시간복잡도 O(logn) 일종의 완전 이진트리를 기반으로 MinHeap, MaxHeap으로 구성된다.

2023년 4월 12일
·
0개의 댓글
·
post-thumbnail

[programmers] lv.2 점 찍기

문제 바로가기 문제 접근 > 1. while문을 두 번 사용해서 모든 k의 배수에 대해서 확인 >> 당연히 시간초과 발생 가능한 x값들 내에서만 모든 k의 배수에 대해서 확인 >> 시간 줄어들었으나 여전히 시간초과 가능한 x값들 내에서의 y값을 구하고 그 값의 범위 내에서의 k에 대한 배수의 개수를 count 정답 코드 3번 접근 > 딱히 새로운 접근법을 요구하지 않는 간단한 구현 문제 다른 사람 코드 y값을 구하고 바로 cnt를 update하면서 더 시간절약 가능

2023년 4월 8일
·
0개의 댓글
·
post-thumbnail

[programmers] lv.2 유사 칸토어 비트열

문제 바로가기 문제 접근 >1. while문을 사용해서 주어진 규칙을 따라 n번만큼 반복 후 그 문자열에서 slicing으로 해당 범위 구한 후 count('1') >> 예상했지만 시간초과 발생 마찬가지로 while문 사용하지만 주어진 범위의 길이가 천만으로 제한되어 있기 때문에 범위가 포함되는 부분적인 문자열만 구한 후 indexing 정답 코드 1 (시간초과) 2 (정답) ` math에서의 올림과 내림 >from math import ceil # 올림 from math import floor # 내림

2023년 4월 5일
·
0개의 댓글
·
post-thumbnail

[programmers] lv.2 이모티콘 할인행사

문제 바로가기 문제 접근 >- 가입자 수가 큰 것을 우선으로 그 다음에 판매익을 비교한다 >> 가입자 수가 같을 경우만 판매수익을 비교해서 업데이트 시킨다 >- user의 제한이 100명, emoticon의 수가 7개로 한정되어있다 >> 할인율은 10,20,30,40으로 정해져 있으므로 emoticon을 할인하는 경우의 수는 최대 4^7으로 모든 case에 대해 판별해도 시간 초과가 나지 않을 거라 생각 >- 중복조합(from itertools import product)을 이용해서 모든 case를 구했다 (코드의 discount_cases) 정답 코드 itertools를 이용한 순열, 조합 >from itertools import permutations #순열 from itertools import product #중복순열 from

2023년 4월 4일
·
0개의 댓글
·