본문 바로가기

모두보기

[코딩인터뷰] 백준 9663번 def solve(n, location, column): c = 0 if column == n: return 1 for row in range(n): if is_possible(n, location, column, row): location.append((column, row)) c += solve(n, location, column + 1) location.pop() return c def is_possible(n, location, column, row): for loc in location: if loc[0] == column: return False if loc[1] == row: return False for k in range(1, min(n - loc[0], n - loc[1])): if c..
[코딩인터뷰] 백준 2661번 def is_possible(l): for d in range(1, len(l) // 2 + 1): for s in range(len(l) - (d*2) + 1): a_start = s a_end = s + d a = l[a_start:a_end] b_start = a_end b_end = a_end + d if b_end > len(l): break b = l[b_start:b_end] if a == b: return False return True n = int(input()) l = [] value = (1, 2, 3) pos = [[True, True, True] for _ in range(n)] while len(l) < n: i = len(l) is_appended = False for v i..
[코딩인터뷰] 트라이 자료 구조 Trie data structure 트라이 자료 구조 Trie data structure 문자열 검색에 특화된 트리 자료 구조 트라이 자료 구조는 기본적으로 트리 형태로 구성되는데, 언어의 문자가 제한되어 있다는 특징을 활용한 자료 구조입니다. 트라이 자료 구조는 아래 그림과 같이, 단어를 문자의 형태와 순서를 기준으로 트리를 구성하는 자료구조입니다. 예를 들어, tea 라는 단어를 트라이 자료 구조에 추가하게 되면 root 노드부터 시작해서 t, e, a 순서로 트리에 추가합니다. 이렇게 여러 단어가 추가된 트라이 자료 구조에서 tea 로 시작하는 단어를 찾는다면, 모든 단어를 하나 하나 첫 문자부터 비교하며 검색할 필요없이 트라이 자료 구조의 tea 노드의 자식 노드만 탐색하면 됩니다. 특히 영어의 알파벳은 한글과 달리 문자가 나열되는..
[React] 조건부 렌더링 패턴 Conditional Rendering Pattern 조건부 렌더링 패턴 Conditional Rendering Pattern 리액트의 조건부 렌더링 문서에서 조건에 따라 랜더링할 컴포넌트를 선택하는 방법을 소개하고 있지만 추가적으로 알아두면 유용한 best practices 패턴이 몇 가지 더 있어서, 하나씩 소개드리도록 하겠습니다. 소개드릴 패턴 목록입니다. if else 패턴 : ? 패턴 && 패턴 switch case 패턴 enum 패턴 HOC 패턴 if else 패턴 리액트 공식 문서에서 소개하는 가장 기본적인 패턴입니다. function Greeting(props) { const isLoggedIn = props.isLoggedIn; if (isLoggedIn) { return ; } else { return ; } } if 문 조건에 따라 Us..
[Xamarin] View 안에 View 를 주입할 수 있는 View 를 작성해보자 View 안에 View 를 주입할 수 있는 View 를 작성해보자 View 안에 여러 View 를 주입하고 속성에 따라 교체하는 ContainerView 를 구현하거나, NavigationBar 의 크기와 모양만 잡아두고 Button 을 추가하는 등 활용하는 방법이 많으니 알아두시면 유용합니다. 예제 코드 ContainerView // ContentView.Content 를 Views 속성으로 연결하는 Attribute [ContentProperty(nameof(Views))] public class ContainerView : ContentView { // 주입된 View 를 배치하는게 사용할 Layout private StackLayout _layout; // 외부에서 주입할 View 를 저장할 자료..
[Xamarin] BindableProperty 를 Override 해보자 BindableProperty 를 Override 해보자 Xamarin 으로 View 를 개발하다보면 재활용성을 높이기 위해 기존의 View 를 상속받아서 개발하게 됩니다. 특히 특정 스타일의 View 를 반복적으로 사용할 때 아래와 같이 작성하게 됩니다. public class MyFrame : Frame { private readonly Label _title; public string Title { set => _title.Text = value; } public MyFrame() { BackgroundColor = Color.LightPink; _title = new Label { TextColor = Color.Black, FontSize = 16, }; Content = _title; } } ..
[Xamarin] Item 이 Layout 에 따라 자동으로 배치되도록 해보자 Item 이 Layout 에 따라 자동으로 배치되도록 해보자 ItemsView 개발 배경 ListView 나 CollectionView 는 Xamarin 팀에서 제공하는 Layout 만 사용해야 하는 단점이 있습니다. 저는 이를 극복해보고자 CollectionView.ItemsLayout 에 저만의 레이아웃을 추가해보려고 했지만 실패했고, Custom Layout 을 활용해서 Item 을 배치할 수 있는ItemsView를 만들게 되었습니다. 글 순서는 프로젝트에 바로 사용하실 수 있도록 배치했습니다. 소스코드 활용방법 설명 ItemsView 소스코드 [ContentProperty(nameof(ItemsLayout))] public abstract class ItemsView : ContentView, I..
[Xamarin] 화면 크기에 따라 변화하는 ResponsiveLayout 을 만들어 보자 화면 크기에 따라 변화하는 ResponsiveLayout 을 만들어 보자 먼저 이 글의 목적은 두 가지입니다. 먼저 공식 문서의 엉성한 번역으로 고생하시는 개발자 분들에게 친절한 설명을 제공하는게 목적입니다. 그리고 추가적으로 이 글 이후에 작성할 ItemsView 에 대한 글을 이해하기 위한 기초 지식을 제공하고자 합니다. Layout 을 직접 구현해야 할까? Xamarin 에서 기본적을 제공하는 Layout 은 아래와 같이 5 가지가 제공됩니다. 각 Layout 마다 특징도 다르고 앱을 만들 때 5 가지 이외 레이아웃이 필요한 상황도 드물기 때문에, Layout 을 직접 구현하게 되는건 드뭅니다. 하지만 Layout 구현에 대한 기초적인 지식을 가지고 있으면 View 의 크기와 배치가 어떻게 결정되는..