1. 가장큰수 해설 그리드에서 문자열 정렬은 단골인것 같다. 원소가 1000이하이니까 문자열 길이 제한을 4자리로 제한해서 비교하면 된다. 참고로 문자열이 0인지 아닌지 비교하는 것은 answer == '0'으로 하면 테스트 11번에서 오류가 난다. answer[0]번째부터 0인지 아닌지를 비교해야 11번, 15번 테스트 케이스를 통과할 수 있다. 2. 완주하지 못한 선수 해설 원래는 정렬을 이용해서 풀곤했는데, 정렬은 nlogn 의 시간복잡도를 가지고 있고 해시는 n의 시간복잡도이니까 해시로 푸는게 더 효율이 좋다고 해서 이처럼 풀었다. 해시에 키, 값을 넣고 완주한 선수가 이름이 있으면 1을 뺀다. 그럼 1이 남아있는 키가 정답이 된다. 3. SQL 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기..
문제 [2,1,1,1,2,2,1,1] 처럼 리스트가 주어졌을 때 1과 2를 최대로 많이 같은 수를 가진 리스트 인덱스를 리턴하라 그러니까 [1,1,2,2]인 3~6까지를 리턴하라는 것이다. 근데 그냥 풀기는 넘 난해하고 2를 -1로 바꿔서 누적합으로 카운팅을 하는 방법과 그냥 dictionary에 초기화를 하면서 1과 2를 세는 방법이 있겠다. 나는 전자로 풀었다. 누적합의 시작점과 끝점을 각각 다른 해쉬에 넣고 for문을 돌려서 누적값이 가장 큰 값의 인덱스 길이를 리턴하면 되겠다. 근데 이렇게하면 시작점이 0이 아니여서 테스트케이스 중 에러가 날 수 있다. 시작점을 0으로 만들어서 누적값이 0부터 시작되게만들어줘야한다. SQL Group by - 카테고리 별 도서 판매량 집계하기 위처럼 테이블 간 조..
1. 가격대 별 상품 개수 구하기 내림을 해서 만의자리 이하는 0으로 나오게한다. 그 컬럼을 price group으로 지정한다. 만원 단위 가격대 별로 그룹을 지정한다.
1. 서울에 위치한 식당 목록 출력하기 소수점 3째자리에서 반올림이면 2번째 자리까지만 보여주면 된다. round, avg 를 사용한다. 그리고 이 컬럼을 SCORE라고 지정한다.(정렬할 때 사용할것) join을 이용해 기본키끼리 연결한다. 그리고 '서울에 위치한 식당들의' 라고 했으니 식당을 그룹으로 지정해야한다. 서울에 위치한이라고 했으니 그룹에서 필터링을 또 걸어줘야한다. 마지막으로 정렬을 한다. 2. 오프라인/온라인 판매 데이터 통합하기 위 문제는 join을 써서 특정 컬럼값만 가져오는게 아니라 테이블 값을 다 가져와서 내보내라는 뜻이다. 그래서 union이라는 절을 사용한다. 모든 row을 가져다가 쓰기 때문에 all로 다 가져다가 합집합으로 만들어버린다. 모든 내용은 똑같으나 user_id가 ..
1. 올바른 괄호 (과 )는 짝꿍이다. 무조건 (로 시작해야한다. 그래야 짝궁이 합쳐질 수 있다. (과 )이 모두 합쳐지면 리스트 속에는 아무것도 남아있지 않게 된다. 리스트속에 1개라도 남아있으면 False가 된다. 2. 프린터 while 절을 계속 돌 때 popleft로 첫번째 요소를 빼내서 deque 요소중 가장 큰 요소와 비교를 한다. 가장 큰 요소는 중요도가 높다는 의미이므로. 그래서 중요도가 낮은 요소면 quene의 맨 뒤에 다시 넣어버린다. 여기서 기존의 idx를 넣어놨으니 이것을 가지고 처음에 인덱스가 몇이었는지 location으로 구별이 가능해진다. 계속 돌리면서 카운팅을 하다가 큰 숫자(중요도 높은거) 사라지면 결국은 location 요소가 나오게 된다. 그 요소가 계속 몇번째로 밀렸는..
1. 같은 숫자는 싫어 배열에 이미 들어있는 수가 있으면 안넣고 안들어있으면 넣는다. 2. 기능개발 100 -a / b해서 올림한 것이 남은 진행율이다. 이걸 리스트에 담아서 처음 인덱스의 값과 그다음값을 비교해서 이전 인덱스값보다 다음 인덱스의 값이 크면 새 값으로 교체하고 인덱스의 차이만큼 작업의 개수를 삭제(개수 리턴)을 하면된다. 이걸 pop 하면 똑같은 로직이 될 것이다. 참고로 마지막 인덱스는 계산을 안하니까 front로 초기화한 값과 전체 인덱스의 길이만큼 빼주면 마지막으로 제거되는 작업의 개수가 나온다. 이걸 리스트에 담아주면 된다. SQL 1. 3월에 태어난 여성 회원 목록 출력하기 month 함수로 월만 비교하면된다. is not null로 row에 Null이 있는 경우 제외한다.
1. 조건에 맞는 회원수 구하기 date_format 사용하던가 아니면 year 사용하면 된다. 2. 상위 n개 레코드 시간을 오름차순하면 첫번째 열이 가장 먼저 온(시간이 가장 이른) 것이다. limit 써서 원하는 개수의 열만 가져온다. 3. 여러 기준으로 정렬하기 ~ 중에서는 ~을 해야합니다는 그리고에 해당하므로 ,로 연결해줄 수 있다. 4. 어린 동물 찾기 !=과 는 같은데 퍼포먼스는 가 더 좋다고 한다. 5. 아픈 동물 찾기 mysql에서 같은 문자열을 찾을 때는 ==이 아닌 =이다. 6. 강원도에 위치한 생산공장 목록 출력하기 열에서 해당 문자열이 포함되는지 알기 위해서는 like를 사용하고 %는 그 이후 문자열은 상관없다는 뜻이다.
1. 피로도 완전탐색은 permutation, 소수찾기, 정렬 정도로 많이 풀 수 있다. 위 문제는 순열로 풀 수 있다.(모든 경우 찾기인데 효율성 테스트가 없을 때) 리스트의 조합 3개를 순서를 마구잡이로 만들어낸 것을 nums에 담고 이걸 for문을 돌려서 피로도 계산을 시킨다. 그리고 카운팅을 한다. 이렇게 각각 돌린걸 카운트하는게 cnt, 전체 카운팅이 answer Max 함수를 써서 가장 큰 것을 리턴한다. 요약하자면, answer = max(answer, cnt)는 현재 값과 클리어한 던전 수 사이의 최대값으로 변수를 업데이트하는 데 사용한다. 그래서 모든 순열에 걸쳐 클리어한 던전의 최대 개수를 리턴한다. 2. 전력망을 둘로 나누기 이것도 순열로 풀 수 있다. 모든 조합 + 효율성이 없기 때..