본문 바로가기

분류 전체보기339

구름톤 챌린지 2주 day9 학습 일기 2023. 8. 24.
구름톤 챌린지 2주 day8 학습 일기 그리디였지만, 어렵지 않은 그리디였다. 최적해를 계속 선택하면 되는 문제였는데 조금 더 코드를 깔끔하게 개선한다면, 각 아이템의 고통 감소 수치를 배열로 만들고 반복문을 써서 중복 코드를 줄일 수 있다. items = [ , , ... ] for item in items: ... 2023. 8. 23.
구름톤 챌린지 2주 day7 학습 일기 N행 N열의 격자판이 주어지고, 각 격자의 위치정보에 구름 유무가 0 또는 1로 표현된다. 간단하게 생각하면 지뢰찾기이고 이를 구름찾기로 변형한 귀여운 문제 1. 전체 판을 탐색해서, 0인 위치인지 확인하기 - 그래야 구름이 아닌 칸(아무것도 존재하지 않거나, 깃발을 놓을 수 있는 칸)이기 때문인데 - 만약 1인 위치도 포함한다면 주변에 구름이 K개인 경우가 있는 경우, 해당 칸도 k의 횟수로 포함되기 때문이다. 2. 이제 주변 8칸을 탐색하면 된다. - 내 경우는 탐색할 칸에 대해 미리 배열을 선언하고 반복문으로 해당 요소들을 꺼내왔다. direction = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)] ... for dr,dc in directio.. 2023. 8. 22.
구름톤 챌린지 2주 day6 학습 일기 i+j+k의 값이 가장 큰 것을 출력하는 것이 목표 하지만, 부분 문자열을 모두 모으기까지 해당 부분 문자열이, 전체의 정렬된 부분 문자열에서 몇번째인지 알기 어렵다. 따라서 완전탐색을 해야하는 문제. N의 크기가 100이 최대이기 때문에 n^2이더라도 충분하다. 1. 문자열을 3개의 부분으로 나누어야 한다. 2. 나눈 문자열을 (a) 저장하기 [자료구조] set 목적: 모든 부분 문자열을 하나의 자료구조에 저장하고 정렬해야 하기 때문. set으로 중복 제거 (b) 저장하기 -> 저장하지 않고 다시한번 순회도 가능 [자료구조] 배열 목적: i,j,k에 대한 점수 계산(부분 문자열을 다 모으고, 정렬한 뒤에 사용하기 위함) 3. 정렬 4. 점수 계산 2023. 8. 21.
rebase와 merge 원격 저장소가 바뀌었는데도 그냥 git rebase origin/main 을 하면 변화가 없다 git fetch origin 을 해야, 정보를 가져오고 그것으로 rebase를 진행 git merge : A 브랜치를 B 브랜치로 합치려 할 땐, A 브랜치를 체크아웃(들어감) 상태에서 git merge B를 입력 처음 머지커밋 하실 때 jimin 브랜치에서 git merge hojin 충돌을 해결한 뒤 git commit을 하면 된다. => 머지 커밋이 생기는데, 이걸 수정하면 안됨! 그냥 놔둬야 한다. (jimin|MERGING) 이 사라지게 된다. 내가 헷갈린 점 checkout한 브랜치가 B일 때(그러니까 지금 작업중인 브랜치가 B) git rebase A를 하면 A 위에 B의 작업물(commit)이 .. 2023. 8. 20.
구름톤 챌린지 1주 day5 학습 일기 이진수 정렬 문제 파이썬 풀이 1. bin()으로 문자열 이진수를 만들어준 뒤 2. 배열에 ['이진수'.count(1), 십진수] 순서로 삽입 3. 내림차순 정렬 sort(key = lambda x:(-x[0],-x[1])) bin을 사용한 건 while 등으로 반복문을 사용하는 것보다 빠를 것이라는 생각에서였다. 그런데, 자바스크립트는 어떻게 풀지 싶어서 이진수 부분을 검색해보니 Number의 toString(2)를 사용한다고 한다. 참으로 편리하게, (파이썬처럼) 슬라이스를 할 필요 없이 바로 이진수 문자열이 반환된다. 그리고 문자열을 배열로 만들어주는 과정이 필요하다. .split('') 그리고 1을 세는 방법은 filter 메서드를 사용하는 것이고, filter(num => num === '1').. 2023. 8. 19.
원격 저장소 코드와 로컬 저장소 코드 동일 여부 확인하기 commit을 수정하다가, 커밋 그래프가 복잡해져서 복구하다 보니 원격 저장소와 얼마나 차이나는지 확인하기 위해 명령어를 찾아보았다. git fetch origin git diff main origin/main 아무것도 출력되지 않으면 동일한 것 !휴! 2023. 8. 18.
구름톤 챌린지 1주 day4 학습 일기 3일차 까지는 난이도가 별1개였지만, 오늘부터 난이도가 별 2개! 1. 최댓값을 기준으로 인덱스값이 증가 또는 감소할 때 검사하는 코드가 중첩되지 않도록 이번에는 함수화했다. (인덱스가 증가하거나 감소하는 부분만 다르고 나머지 로직은 똑같다는 판단) - 함수의 매개변수는 3개 (1) 햄버거 배열 (2) 배열의 max값에 해당하는 index중 가장 작은 값 (3) +1인지 -1인지 인덱스 증가 방향 2. 인덱스 값이 증가할 때 그리고 인덱스 값이 감소할 때 검사한 함수에서 (1) 모두 true를 반환하면 해당 배열의 전체 합을 계산후 출력했고, (2) 하나라도 false를 반환하면 0을 출력했다 테스트 케이스를 추가로 작성할 수 있고 실행해볼 수 있어서 편한데, 예상 출력값이 같이 포함되면 좋을 것 같다... 2023. 8. 17.
구름톤 챌린지 1주 day1 학습 일기 구름톤 챌린지 구름LEVEL 알고리즘 먼데이 챌린지가 구름톤 챌린지로 새롭게 찾아왔습니다. 온라인 알고리즘 문제 풀이와 오프라인 팀 챌린지를 모두 즐길 수 있는 구름톤 챌린지와 4주 동안 매일 꾸준히 성장 9oormthonchallenge.oopy.io 구름톤 챌린지 시작~! [배운점] [느낀점] [어려웠던 점] 첫날이었는데, 첫 주 문제 카테고리는 구현이었다. 기본적인 구름 IDE 사용법을 익히기 위한 입출력과 간단한 수식만 작성하면 되는 문제. 구름 IDE는 오랜만이었지만 사용법이 간단했다. 최근 스터디에서 다뤄지는 주제가 구현이었는데 마침 챌린지 첫주차 주제가 구현이어서 알고리즘 스터디원들에게 챌린지를 홍보했다. 참여한 목적은 일단, 최근 코딩테스트 문제 유형에 대한 트렌드를 알면 가장 좋을 것 같.. 2023. 8. 14.