전체 글 607

[백준, 파이썬, 1764번] 듣보잡

풀이 파이썬의 집합의 특성을 활용하여 교집합인 intersection을 사용하여 풀이 여기서 처음에는 문자 하나하나에 rstrip() 메서드를 적용하는 것이 더 많은 시간이 사용될 것 같아 적용하지 않고 제출했는데 이후 적용 후 제출한 시간과의 차이가 어마어마한 것을 보고 역시 입력 값이 많으면 무조건 readline을 사용하긴 해야겠다라고 생각을 다시 하게 됨. import sys input = sys.stdin.readline n,m = map(int,input().split()) no_listen = set([input().rstrip('\n') for _ in range(n)]) no_show = set([input().rstrip('\n') for _ in range(m)]) result = s..

알고리즘 2023.08.29

[백준, 파이썬, 1026번] 보물

풀이 단순히 해결하기 위해선 a는 오름차순, b는 내림차순 정렬 후 첫 번째 코드와 같이 a와b의 인덱스 값을 곱한 값을 누적합 하면 되는 단순한 문제지만. 문제의 의도는 a만 정렬하고 b는 정렬하지 않는 것을 중점으로 두고 있기에 두 번째 코드와 같이 해결 b에 있는 가장 큰 값을 제거 하는 방식을 적용 cnt는 a는 오름차순 정렬을 했기에 순서대로 적용하기 위함. # 일반적으로 푸는 방식 import sys input = sys.stdin.readline n = int(input()) a = sorted(map(int,input().rstrip('\n').split())) b = sorted(map(int,input().rstrip('\n').split()),reverse=True) print(sum..

알고리즘 2023.08.29

[백준, 파이썬, 1931번] 회의실 배정

풀이 이런 회의실 배정과 같은 문제는 마치는 시간부터 접근하면 쉽게 해결할 수 있기에 정렬을 한 다음 풀기 정렬시 마치는 시간을 기준으로 정렬 한 뒤 같은 값이 있는 경우엔 시작 시간을 기준으로 한 번 더 정렬하여 해결 그래서 현재 result에 있는 시작시간 보다 현재 li의 마치는 시간이 작거나 같을 경우엔 새롭게 추가 아닐 경우엔 아래의 조건처럼 한번 더 조건 분기를 거친 다음 교체하여 해결 import sys input = sys.stdin.readline n = int(input()) li = sorted([list(map(int,input().rstrip('\n').split())) for _ in range(n)], key= lambda x: (x[1],x[0]), reverse=True) ..

알고리즘 2023.08.28

[백준, 파이썬, 11399번] ATM

풀이 우선 받은 값을 정렬한 다음 누적 합을 구하면 되는 문제가 됨 그래서 두 가지 방법을 생각 첫째. DP를 활용하여 이전 값을 더 한 값을 해당 배열에 넣고 최종적으로 합산하기. 둘째. 누적 합은 결국 계속해서 다음 값에 해당 값을 남은 수 만큼 더하기 때문에 해당 로직을 생각해서 풀기 첫 번째 방식 import sys input = sys.stdin.readline n = int(input()) result = 0 li = sorted(map(int,input().rstrip('\n').split())) for i in range(1,n): li[i] += li[i-1] print(sum(li)) 두 번째 방식 import sys input = sys.stdin.readline n = int(inp..

알고리즘 2023.08.28

[Flutter, 토이 프로젝트] 위젯 사이의 간격 간편하게 주고 싶을 때 - SizedBox

목적 Row() 위젯에 추가한 Icon 간의 간격을 간편하게 CSS의 word-spacing 처럼 요소 간의 간격을 쉽게 주고 싶었지만... 계속된 Container로 감싼 다음 margin 을 주는 노가다를 하게 되어 찾게 된 방법. 코드 SizedBox() 위젯을 추가하여 공간만 차지하게 만들어주기 Container( child: Row( children: [ Icon(Icons.search), SizedBox(width: 10), Icon(Icons.notification_add_outlined), SizedBox(width: 10), Icon(Icons.menu) ], ), )

Flutter 2023.08.22

[Flutter, 토이 프로젝트] CustomScrollView 안의 패딩 위젯 - SliverPadding

발생 에러 A RenderPadding expected a child of type RenderBox but received a child of type RenderSliverGrid. SliverGrid는 Sliver 계열의 위젯이므로 SliverToBoxAdapter 안에 직접적으로 넣을 수 없기에 발생하는 에러인듯하다. 목적 CustomScrollView()위젯의 slivers 안에 SliverGrid() 위젯을 넣기 전 위젯을 감싸는 하나의 요소에 패딩을 넣어주기 코드 SliverPadding을 사용하여 패딩 속성을 주기 SliverPadding( padding: EdgeInsets.all(10), sliver: SliverGrid( gridDelegate: SliverGridDelegateWit..

Flutter 2023.08.21