분류 전체보기
-
클린 코드 3장 함수독서_dev/Clean Code 2022. 1. 14. 22:34
// 3-1. HtmlUtil.java (FitNesse 20070619) public static String testableHtml { PageData pageData, boolean includeSuiteSetup } throws Exception { Wikipage wikiPage = pageData.getWikiPage(); StringBuffer buffer = new StringBuffer(); if (pageData.hasAttribute("Test")) { if (includeSuiteSetup) { WikiPage suiteSetup = PageCrawlerImpl.getInheritedPage( SuiteResponder.SUITE_SETUP_NAME, wikiPage ); if (s..
-
클린 코드 2장 의미 있는 이름독서_dev/Clean Code 2022. 1. 14. 22:31
의도를 분명히 밝혀라 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. int d; // 경과 시간(단위: 날짜) // ==== d보다는 아래 변수들이 훨씬 명확 int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; }..
-
클린 코드 1장 깨끗한 코드독서_dev/Clean Code 2022. 1. 14. 22:29
깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. 스스로 연습하고 실패도 맛봐야 한다. 남들이 시도하다 실패하는 모습도 봐야 한다. 그들이 넘어지고 일어서는 모습도 봐야 한다. 결정을 내리느라 고민하는 모습, 잘못된 결정으로 대가를 치르는 모습도 봐야 한다. "나중은 결코 오지 않는다." 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. 프로그래머들이 대충 넘어가는 부분 중 하나가 오류 처리다. 메모리 누수, 경쟁 상태(race condition), 일관성 없는 명명법이 또 다른 예다. 한 마디로 요악하면, 깨끗한 코드는 세세한 사항까지 처리하는 코드다. 깨끗한 코..
-
UITextField clear button customiOS 2021. 10. 16. 23:48
UITextField 에서는 기본적으로 clear 버튼을 제공하는데요, 이걸 커스텀 하려면 어떻게 하는지, 이때 또 어떤 문제가 있었는지 알아보겠습니다 :) 기본 clear button 우선 기본적인 clear 버튼은 clearButtonMode를 통해 만들어줄 수 있습니다. textfield.clearButtonMode = .whileEditing 이렇게 4가지 모드가 있는데 각각은 보시면 아시겠죠?? 아무튼 이걸 설정해주면 이렇게 clear 버튼이 나타나고, 버튼을 눌러 clear까지 알아서 해줄 수가 있습니다. clear button custom 문제는 저 clear 버튼을 커스텀 할 수가 없다는 겁니다.. (아니 🍎 쓰는김에 좀 더 쓰지...) 제 문제는 저 어두운 배경에서 clear 이 너무 안..
-
Playground using Algorithms PakageSwift 2021. 10. 9. 14:48
오늘은 플레이그라운드에서 원하는 pakage를 import 해서 쓸 수 있는 방법을 알아보도록 하겠습니다! 이번에 새로 나온 내장 메소드들이 너무 좋아서 사용해보려고 했는데 이걸 위해선 import Algorithms 가 필요한데요 플레이 그라운드에서 이게 안되는거죠.... 오늘은 이걸 해볼거에요! 먼저 Playground 자체만 가지고는 패키지를 추가할 수가 없습니다 ㅠㅠ 전체적인 방법을 먼저 간략히 소개해드리면 workspace 생성 -> 여기에 포함되는 playground 생성 -> swift-algorithms 패키지 추가 이게 끝입니다. 간단하죠! 바로 해볼게요! workspace 생성 xcode를 켜서 workspace 만들어줍니다! playground 생성 이제 여기서 플레이그라운드를 생성해..
-
[Programmers] 스티커 모으기(2)Algorithm/Programmers 2021. 10. 9. 13:21
출처: https://programmers.co.kr/learn/courses/30/lessons/12971 분류: dp 접근 배열의 길이도 100,000 으로 크고 이 스티커를 뗄지 안 뗄지, 앞에껄 땠는지 안 땠는지 등등의 경우를 고려해줘야 하니 DP로 문제로 접근을 했어요. 그냥 배열의 첫 번째를 기준으로 잡으면, 이 스티커를 땔 경우 DP vs 떼지 않을 경우 DP 두 번의 DP를 구해서 최대를 구하면 되는 문제였네요 처음에 저도 이렇게 접근은 했는데 첫 번째 인덱스부터 DP, 마지막 인덱스부터 거꾸로 DP 라는 엉뚱한 풀이로 해서.. 꽤나 삽질을 했습니다 😰 풀이 일단 각 케이스의 0, 1번 기저 사례를 구해주고 2번 인덱스부터 점화식으로 적용해주면 됩니다. (사실 n이 3일 때는 하나밖에 땔 ..
-
[BOJ] 2178 미로탐색Algorithm/BOJ 2021. 10. 9. 13:03
출처: https://www.acmicpc.net/problem/2178 분류: BFS 접근 시작점부터 목적지까지 최단 경로를 찾는 전형적인 BFS 문제였습니다. 풀이 방법은 다양하겠으나 저는 거리를 담아두는 distanceMap 이차원 배열을 하나 만들어서 풀었습니다. import Foundation let rc = readLine()!.split(separator: " ").map { Int($0)! } var map = [[Int]]() for _ in 0..= 0, nc >= 0, nr < rc[0], nc < rc[1], distanceMap[nr][nc] == 0, map[nr][nc] == 1 else { continue } distanceMap[nr][nc] = distanceMap[r][..