분류 전체보기


데이터 전처리 Pdf는 테이블 형태로 되어있습니다. Pdf에서 테이블을 감지하려면 테이블의 선이 명확해야합니다. 이미지를 흑백이미지로 변환하여 테이블의 경계를 뚜렷하게 하고 테이블 정보를 추출하기 용이하게 만들었습니다. 테이블에 학식 정보만 담겨있으면 좋겠지만 불필요한 노이즈가 섞여있습니다. 예를 들면, 고기메뉴 옆에 돼지 이모티콘과 하트 이모티콘입니다. 이모티콘은 테이블 선을 가려서 윤곽선을 감지하는 것을 방해합니다. 끊긴 선을 연결하기 위해 dilation 함수로 선을 연결하였습니다. Dilation Erosion과 반대로 대상을 확장한 후 작은 구멍을 채우는 방법입니다. Erosion과 마찬가지로 각 pixel에 structuring element를 적용합니다. 대상 pixel에 대해서 OR 연산을..

#include #include using namespace std; using ii = pair; using ll = long long; int t, max_w; int dp[1002][32][3]; int zadu[1002]; int main() { cin >> t >> max_w; for(int i=1; i> zadu[i]; for(int i=1; i max_w; for(int i=1; i> zadu[i]; for(int i=1; i


재귀함수를 통해 풀이를 만들어주었다. #include #include using namespace std; using ii = pair; using ll = long long; int n; string str; vector img; vector to_sub(vector& src, int dir) { // 반복되는 코드!! vector result; int sz = src.size()/2; if(dir == 1) { for(int i=0; i


최근 알고리즘 공부에 푹 빠져지내고 있다. 예전에는 문제유형을 분석하는 연습을 많이 했다면 요즘에는 한 유형을 깊게 공부하는 재미에 들었다. 대부분의 알고리즘 강의에서 비스마스킹을 int로 푸는 방법을 설명한다. int로 비트연산자 사용이 가능하지만 나는 bitset의 존재를 알고 있었다. bitset을 공부한다면 문제풀이에 도움이 되지 않을까하는 생각이 들었다. 오늘은 bitset에 대해 알아보자 bitset 사용방법 - 비트셋(Bitset)이용 방법 및 선언 #include 를 이용 bitset 이름;:: bitset 선언 - 비트셋(Bitset) 함수 bit.set() :: 전체 비트를 1로 셋팅 bit.set(n, true/false) :: n+1번째 비트를 1또는 0으로 셋팅 bit.reset(..


배경 애플 디벨로퍼 아카데미를 지내면서 마지막 팀프로젝트를 앞두고 있는 상황이였다. 아카데미에서 ios 생태계를 적극 활용한 앱을 보여주길 기대한다. 하지만 백엔드가 들어간다면 앱이 훨씬 풍부해지지 않겠는가! 그래서 백엔드를 공부할 마음으로 강의를 수강하게 되었다. 무슨 강의를 살까 고민하다가 [10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online.] 를 구매하였다. 다른 강의보다 강의시간이 넉넉했고, 무엇보다 바로 실습 예제를 공부할 수 있다는 점이 좋았다. 아쉬운 건 패캠은 강의 미리보기가 없어서 강사님이 어떤 느낌인지 알 수가 없었다. 살짝 의심스러운 마음으로 구매하게 된다. 수강 후기 처음 배운 내용은 깃헙의 프로젝트 사용방법이였다. 아니, 백엔드를 배우러 왔..

문제 키보드에 버튼이 안붙는 이슈가 있습니다. 버튼이 키보드와 같이 올라오길 바랐습니다. 하지만 버튼은 뷰의 중간에서 생성되고 내려오면서 올라오는 키보드에 붙습니다. 이 문제를 해결하기 위해 swiftui의 ToolbarItemGroup를 사용해보았습니다. 문제의 코드 if isKeyboardVisible { CTAButton.CustomButtonView(style: .expanded(isDisabled: !isActiveButton())) { onClickButton() } label: { Text("다음") // 생략 ... ToolbarItemGroup를 이용한 시도 변경된 코드 .toolbar { ToolbarItemGroup(placement: .keyboard) { Text("다음") .B1..

목적 반복되는 코드를 개선하여 읽기좋은 코드를 변환한 사례를 보여주기 위해 이 글을 작성합니다 배경 (🔔 띠링~, 디자이너의 요청입니다) 새로운 컴포넌트를 추가해달라는 요청이 들어왔습니다. 피그마에 들어가 뷰의 변경사항을 보았습니다. 이전화면과 달라진 점은 신청인의 성함이 새로 추가되었다. 처음 든 생각은 '신청인 성함 밑에 똑같은 컴포넌트가 있으니 그대로 추가해주면 되겠는데?'였다. 하지만 코드를 보곤 머리가 복잡해졌다. HStack { Text("신청인 주민등록번호") .B1() .foregroundColor(.G5) Spacer() Button { } label: { Text(patient.id) .B4() .foregroundColor(.G5) Image("chevronRight") } } // ..

목적 사이드 프로젝트를 진행하면서 생긴 문제점과 그 문제를 해결한 과정을 팀원에게 공유하기 위해 이 글을 작성합니다. 문제상황 - 1 앱을 처음 사용하는 사람들을 위한 가이드화면을 그리기 위한 작업을 합니다. 가이드뷰은 반투명한 검은 배경에 처음 클릭해야하는 버튼을 지시하는 화면으로, ZStack을 이용해 뷰를 쌓으려 시도했습니다. 하지만 TabBar는 ZStack으로 쌓은 가이드뷰가 적용되지 않은 모습을 확인할 수 있었습니다. TabBar는 검은배경이 적용되지 않았다 원인 graph TB MainView --> HomeView MainView --> TabBarView 최상위에 MainView가 있고, 그 밑에 HomeView와 TabBarView가 있다. 가이드뷰를 HomeView에서 ZStack으로..

https://www.acmicpc.net/problem/1948 1948번: 임계경로 첫째 줄에 도시의 개수 n(1 ≤ n ≤ 10,000)이 주어지고 둘째 줄에는 도로의 개수 m(1 ≤ m ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 도로의 정보가 주어진다. 처음에는 도로의 www.acmicpc.net ## 접근법 출발지점에서 도착지점까지 오래 걸리는 시간과 해당 경로의 개수를 구해야 한다. 출발지점에서 도착지점까지 오래 걸리는 시간을 구하기 위해 나는 아래와 같은 일차원 배열을 선언했다. dist[노드번호] = 노드번호까지 가는데 걸리는 최대시간 그리고 경로를 추적해야하기 때문에 일차원 벡터 배열을 선언했다. vector prv[노드번호] = 노드번호로 in-degr..