전체 글 183

SWEA 5102 - 노드의 거리

https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIoJqqfYDFAWg 처음 든 생각 - 이건 무조건 BFS다 -> 큐로 구현하고 방문 여부에 따라 반복문으로 노드를 하나씩 추가해주면서 확인하면 된다 - 이동한 거리를 측정하기 위해서 노드 번호와 거리를 같이 다뤄야겠다. 나의 답 T = int(input()) from collections import deque for test_case in range(1, T + 1): V, E = map(int,input().split()) g = [[] for _ in range(V+1) ] for _ in range(E): a,b..

SWEA 5099 - 피자 굽기

처음 든 생각 - 전체 피자를 관리하는 큐와 화덕의 큐 두 개를 생성해야겠다 - 화덕 큐에 피자가 없어질 때까지 반복문을 돌고 popleft, append를 조건에 따라 처리해주면 되겠다. 나의 답 T = int(input()) from collections import deque for test_case in range(1, T + 1): N,M = map(int, input().split()) every = list(map(int, input().split())) for i in range(len(every)): every[i] = [i+1, every[i]] q_pizza = deque(every) q_fire = deque([q_pizza.popleft()]) result = [] while q_..

SWEA 5105 - 미로의 거리

처음 든 생각 - BFS로 거리에 따라 하나씩 탐색을 해야겠다. - 3인 점을 처음 발견하면 그 때가 최소 거리가 될테니깐 함수를 중단하면 되겠다. - 방문한 사실 확인 + 출발점에서의 거리를 한 번에 계산해야겠다. 나의 코드 T = int(input()) from collections import deque for test_case in range(1, T + 1): N = int(input()) a= [[] for _ in range(N)] starting =[0,0] for i in range(N): a[i] = list(map(int, list(input()))) if 2 in a[i]: starting[0] = i starting[1] = a[i].index(2) q = deque() q.app..

SWEA 4881 - 배열 최소 합

처음 든 생각 - 일단 백트래킹이고 (내가 더럽게 못하는 유형) - n-queens 문제랑 비슷한데 대각선만 빠진 형태네 - 각 열에 대해서 하나씩 선택해가면서 모든 값을 비교해봐야겠다. def search(i, s): global result if s > result: return elif i == N: result = min(result,s) else: for j in range(N): if col[j] == 0: // 열 방문 찍고 col[j] = 1 // 그 다음 행으로 넘어가서 탐색 search(i+1, s+a[i][j]) // 다시 복귀 -> 백트래킹 col[j] = 0 T = int(input()) for test_case in range(1, T + 1): N = int(input()) a..

끄적여보는 2023년 회고

2023년도 끝났다. 2024년이 시작된지 일주일이 넘었지만 아직도 사람들을 만나면 "새해복 많이 받으세요"를 하기 때문에 뒷북까지는 아니라고 생각하는 회고를 작성해보려 한다. 한 번도 봐본 적 없는 원펀맨 ost를 들으면서 회고록을 끄적여본다. 1월 플러터에 대해서 갑자기 관심이 솟구쳤었다. 노마드 코더의 플러터 강의를 듣고 앱 개발 생각보다 할만하네? 라고 생각하여 실제 나만의 앱을 출시하기로 결심했었다. 강의에서는 웹툰 앱을 만들어보는 것이였는데 나는 간단한 뽀모도로 타이머 앱을 기획하고 개발하기로 했다. 생애 첫 앱 개발 기록 - Pomodoro 앱 기획 저번주부터 다트와 플러터를 시작해보면서 정말 재밌었다. 안드로이드 에뮬레이터 띄우는 것도 신기하고 구현하는 난이도도 높지 않아 자신감이 뿜뿜 올..

스터디 2024.01.08

python 코딩테스트 - 프로그래머스 다음 큰 숫자

처음 든 생각 - 하나씩 키워가면서 일일이 탐색을 해야겠다 - 이진수로 바꾸는 것은 저번에 배운 bin 함수를 활용해서 해봐야지 나의 답 def solution(n): answer = 0 bn = bin(n) cnt = bn[2:].count("1") while True: n+=1 if bin(n)[2:].count("1") == cnt: return n 주어진 수가 가진 1의 개수를 cnt 변수에 담아놓고 반복문을 통해서 알맞은 수를 찾아가는 과정으로 구현한 것이다. 찾을 때까지 반복문을 돌게 하기 위하여 while True를 사용했고 찾으면 바로 리턴을 하면서 solution 함수를 끝내는 방식으로 구현하였다. 다른 사람들의 풀이도 변수명만 다를 뿐 사용한 함수도 똑같아서 따로 참고해볼 사항은 없었다.

python 코딩테스트 - 프로그래머스 이진 변환 반복하기

처음 든 생각 - 문제에 나온 그대로 차근차근 단계를 밟아나가자 (1) 0 제거 (2) 남은 1의 개수만큼 이진수로 변환 (3) (1)~(2) 과정 반복 - 0을 제거할 때 하나씩 count하면 될 거고 - 이진수 변환하는 건 혹시 라이브러리나 내장함수가 있을까? -> 아니면 재귀로 해서 풀어야된다 나의 답 def solution(s): zeros = 0 count = 0 tmp = 0 while len(s) > 1: for i in s: if i == "0": zeros+=1 else: tmp += 1 s = format(tmp,'b') tmp = 0 count += 1 return [count , zeros] 0의 개수, 이진변환 횟수, 1의 갯수를 담을 3개의 변수를 선언하였다. 반복문은 while..

python 코딩테스트 - 프로그래머스 최솟값 만들기

처음 든 생각 - 순차적으로 곱해주는데 곱하는 수들의 조합을 어떻게 해줘야될까 - 가장 큰 놈이랑 가장 작은 놈이랑 곱해주고 이런 식으로 큰 수 x 작은 수 조합으로 계속 곱해야겠네 나의 답 def solution(A,B): answer = 0 A = sorted(A) B = sorted(B,reverse=True) for i in range(len(A)): answer += A[i] * B[i] return answer 하나의 배열은 내림차순, 다른 배열은 오름차순으로 정렬을 하였다. 그 다음 반복문을 돌면서 같은 인덱스를 참조하며 곱한 값을 더해준다. 그리디의 가장 일반적인 케이스라고 생각된다. 큰 수를 가장 적게 더해주는 방식으로 차근차근 나아가면 되는 방식으로 해결되는 문제였다. 다른 사람의 답 ..

React - 가로 스크롤바 간단하게 만들기 (feat. tailwindCSS)

모바일에서 가로로 스크롤되는 메뉴 / 내비게이션 바는 흔히 볼 수 있다. 자주 보이는 컴포넌트이지만 구현은 전혀 어렵지 않다. 기본적인 논리는 이렇다. - div라는 태그가 있는데 안에 내용물이 넘치는 상황 - 내용물이 overflow되면 가로로 스크롤 될 수 있게 설정을 해주면 된다 아래 예제는 tailwind를 사용하여 구성하였다. {navItem.map((item) => { return ( // 내용물 알아서 ); })} 기본적으로 div는 block이기 때문에 width가 전체 가로 길이와 일치한다. 모바일 화면에서 가로길이를 넘어갔을 때 이를 화면 안으로 몰아서 넣으려고 하지 않게 해주기 위해 whitespace 속성을 사용한다. 왼쪽은 일반적인 div 태그 내에서 내용물이 넘칠 때의 상황이다...

웹/React 2023.12.04
728x90