전체 글

전체 글

    [프로그래머스/Kotlin] 최소직사각형

    문제 설명 이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다. 모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solu..

    소프트웨어 개발방법론

    개요 소프트웨어 개발 방법론은 소프트웨어를 어떻게 만들지에 대한 관심이다. 따라서 개발 방법론에는 단계별 산출물뿐만 아니라 누가 어떤 순서로 어떻게 만들어야 하는지, 그리고 어떤 도구를 사용할 건지에 대한 구체적인 정의이다. 소프트웨어 개발방법론의 구성은 아래 표와 같다. 작업 절차 소프트웨어를 진행할 때 이루어지는 작업의 순서 작업 방법 각 단계별 작업마다 수행해야 할 일(누가, 언제, 무엇을) 산출물 단계별로 나오는 산출물(설계서, 명세서) 관리 개발 진행을 어떻게 제어하고 감독할 것인지 기법 단계별 작업 시 사용하는 기술 또는 기법(DFD, ERD, Use Case) 도구 사용하는 기법 별 지원 도구 종류 소프트웨어의 개발 방법론은 크게 정보공학 방법론, 객체지향 방법론, CBD 방법론, 애자일 방..

    [클린 코드] 객체와 자료구조(1)

    자료 추상화 아래 두 클래스는 모두 2차원 점을 표현한다. 차이점은 한 클래스는 구현을 외부로 노출하고 다른 클래스는 구현을 완전히 숨겼다. //6-1) 구체적인 Point 클래스 public class Point{ public double x; public double y; } //6-2) 추상적인 Point 클래스 public interface Point{ double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getTheta(); void setPolar(double r, double theta); } 6-2 코드는 어떤 좌표계를 사용하는지 알 길이 없지만 인터페이스는 자료 구조를 명백하게 표..

    [프로그래머스/Kotlin] 신고 결과 받기

    문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k = 2..

    [클린 코드] 형식 맞추기(2)

    수직거리 서로 밀접한 개념은 세로로 가까이 두어야 한다. 같은 파일에 속할 정도로 밀접한 두 개념은 세로 거리로 연관성을 표현한다. 여기서 말하는 연관성이란 한 개념을 이해하는데 다른 개념이 더 중요한 정도이다. 연관성이 깊은 두 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스를 여기저기 뒤지게 된다. 변수 선언 변수는 사용하는 위치에 최대한 가까이 위치해야 한다 만들어낸 함수가 매우 짧을경우 지역 변수는 각 함수 맨 처음에 선언하는 것도 하나의 방법이겠다. 아래 코드는 JUnit 4.3.1에서 가져온 다소 긴 함수이다. private static void readPreferences(){ InputStream is = null; try{ is = new FileInputStream(g..

    [프로그래머스/Kotlin] 3진법 뒤집기

    문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 n result 45 7 125 229 입출력 예 설명 입출력 예 #1 답을 도출하는 과정은 다음과 같습니다. n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현 45 1200 0021 7 따라서 7을 return 해야 합니다. 입출력 예 #2 답을 도출하는 과정은 다음과 같습니다. n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현 125 11122 22111 229 따라서 229를 return 해야 합니다. 풀이 c..