Today I Learned

최지웅·2024년 1월 14일
0

Today I Learned

목록 보기
81/238

오늘할일
1. LeetCode
2. KMOOC강의 수강(2/3)
3. 오픽공부

오늘한일
1. LeetCode

    1. Kids With the Greatest Number of Candies는 candies리스트에 extraCandies를 더했을 때 가장 많은 사탕을 가지는지를 List으로 리턴시키는 문제이다. 이전 문제에서 고군분투했던 때를 생각하며, 모든 문장을 천천히 읽어보며 이해하였고 test코드를 확인하는 코드부터 작성하였다.
	private Boolean isSameList(List<Boolean> result, List<Boolean> answer){
        result.forEach(System.out::print);
        System.out.print(", ");
        result.forEach(System.out::print);
        System.out.print("의 비교결과: ");
        if(result.size()!= answer.size()) {
            System.out.println("fail");
            return false;
        }
        for(int i=0; i<result.size(); i++) {
            if (!result.get(i).equals(answer.get(i))) {
                System.out.println("fail");
                return false;
            }
        }
        System.out.println("passed");
        return true;
    }
    public static void main(String[] args) {
        /*
        * 사탕을 가지고 있는 n명의 아이들.
        * 정수배열 candies[i]에는 i번째 아이가 가지고 있는 사탕의 개수를 표현한다.
        * extraCandies인자는 자신이 가지고 있는 여분의 사탕을 의미한다.
        *
        * 길이가 n인 부울배열을 반환한다.
        * extraCandues를 i번째 아이에게 주고나면 result[i]를 true로 세팅한다.
        * 그들은 가장 많은 사탕을 모든 아이들에게 주려고하며 나머지는 false이다
        * 여러 아이들에게 가장 큰 수의 사탕을 가질 수 있다.
        *
        * n==candies.length
        * 2<=n<=100
        * 1<=candies[i]<=100
        * 1<=extraCandies<=50
        * */
        Solution solution=new Solution();
        //case1
        solution.isSameList(
                solution.kidsWithCandies(new int[]{2, 3, 5, 1, 3},3)
                , Arrays.asList(true, true, true, false, true)
        );
        //case2
        solution.isSameList(
                solution.kidsWithCandies(new int[]{4,2,1,1,2},1)
                , Arrays.asList(true, false, false, false, false)
        );
        //case3
        solution.isSameList(
                solution.kidsWithCandies(new int[]{12,1,12},10)
                , Arrays.asList(true, false, true)
        );
    }

그 후 문제풀이를 간소화 하기 위해 한 아이의 사탕이 가장 큰지를 확인하는 작업을 별도의 함수로 작성하여 전반적인 처리 과정을 간소화시켰다.

	public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {
        List<Boolean> result=new ArrayList<>(candies.length);
        for(int i=0; i<candies.length; i++){
            if(this.isGreatestNumber(candies, candies[i]+extraCandies)){
                result.add(true);
            } else{
                result.add(false);
            }
        }
        return result;
    }

    private Boolean isGreatestNumber(int[] candies, int number){
        for(int i=0; i<candies.length; i++)
            if(candies[i]>number)
                return false;
        return true;
    }


지난번에 정말 오래걸렸던 것과 달리 이번 문제는 바로 패스하였다. 이러한 접근 방식을 고수하는 것이 좋아보인다.

2. KMOOC강의 수강

  • 오픈소스를 활용한 DevOps의 이해 1주차

    1. DevOps는 기술과 시장의 빠른 변화에 대응하기 위한 최신 소프트웨어 개발/운영 트렌드로 Development+Operations(+Quality Assurance)의 합성어이다.
    2. DevOps는 Saas(Software as a Service)를 위한 것이다.
      • 애자일개발: 계획->개발(무상태 프로세스, 동시성, 보안 포트바인딩 등)
      • 지속적 통합: 애자일개발+빌드X테스트(완벽한 빌드 후 테스트)
      • 지속적 전달배포: 지속적 통합+릴리즈X배포(병목과 지연을 대응. UI와 부하 및 통합 테스트를 수행하며, 스테이징 환경까지 배포한다.
      • 지속적 서비스 전달/개선 서비스 수준관리: 지속적 전달배포+운영X모니터링
    3. 도메인 주도 설계: 업무 담당자와 개발자 간의 공통의 언어와 개념을 맞추고 설계 및 개발을 진행하는 방식.
      • 역공학을 이용하여 클래스를 모델링한 뒤 해당 모델로 논의하며 코드와 설계의 갭을 줄인다.
    4. 오픈소스 DevOps 도구사슬

      - Jenkins는 웹 인터페이스로 간편하게 지속적 통합(빌드->테스트->배포)을 자동화해준다.
      - SonarQube는 소스코드 정적분석으로 품질 대시버드를 제공한다.
  • 클라우드 인프라 아키텍처 양성과정 1주차

    1. 공용인터넷을 통해 제공되는 퍼블릭 클라우드와, 사설 내부 네트워크 혹은 인터넷을 통해 제공되는 프라이빗 클라우드, 둘을 결합한 하이브리드 클라우드로 분류된다.
      • IaaS(Infrastructure as a Service)는 임대하여 종량제 형태의 IT 인프라. 가장 유연한 클라우드 서비스
      • PaaS(Platform as a Service)는 기본 인프라 관리보다 빌드, 테스트, 배포에 집중. 아파치, 인프라는 공급자가 처리
      • SaaS(Software as a Service)는 전자메일같은 클라우드 기반 앱에 연곃하여 사용. 구독 모델에서 사용하는 소프트웨어에 대한 비용을 지불
      • 온-프레미스는 프라이빗 클라우드로 네트워킹부터의 모든 과정을 고객이 관리하는 방식.
    2. Microsoft Azure IaaS기반 다중 지역 부하분산 아키텍처 예제
    • 하나의 리전에 장애가 발생했을 때 다른 리전을 사용하여 사용자가 장애발생여부 자체를 알 수 없게 한다.
    • VMSS(Virtual Machine Scale Set)은 여러 서버를 하나의 동일한 시스템으로 구현할 때 사용하는 것으로, VM크기를 동적으로 조절한다
    • Azure Active Directory는 계정관리를 수행한다
profile
이제 3학년..

0개의 댓글