반응형

2019 KAKAO BLIND RECRUITMENT 문제 

프로그래머스: 실패율 Lv1

https://school.programmers.co.kr/learn/courses/30/lessons/42889

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

주석에 포함된 내용으로

1) arrayList Sorting을 확인

2) HashMap Value 값으로 내림차순 정렬을 해주어야한다.

import java.util.*;

// 2019 KAKAO BLIND RECRUITMENT > 실패율
// 예제를 확인 시, 순차적으로 스테이지를 깨야하기 때문에
// 실패율의 분모 값은 이전 실패수 만큼 감소

/*****************************************************
 1. ArrayList Sorting 확인
 2. HashMap Value 값으로 내림차순 정렬
******************************************************/

class Solution {
    public int[] solution(int N, int[] stages) {
        int[] answer = {};
        
        int pCnt = stages.length;
	HashMap<Integer, Float> map = new HashMap<>();
	
	for(int i=1;i<=N;i++) {
		int stagesStop = 0;
		
		for(int j=0;j<stages.length;j++) {
			if(stages[j] == i) {
				stagesStop++;
			}
		}
		
		float calc = 0;
		if(pCnt != 0) {
			calc = (float)stagesStop/pCnt;
		} 
    
		pCnt -= stagesStop;

		map.put(i, calc);	
	}
	
	List<Integer> keys = new ArrayList<>(map.keySet());
	Collections.sort(keys, (v2, v1) -> (map.get(v1).compareTo(map.get(v2))));
	
	answer = keys.stream().mapToInt(i -> i).toArray();

        return answer;
    }
}

 

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

로또의 최고 순위와 최저 순위  (0) 2024.03.08
숫자 짝꿍  (0) 2024.02.25
추억 점수  (0) 2024.02.22
푸드 파이트 대회  (0) 2024.02.21
2016년  (0) 2020.08.31
반응형

연습문제 유형, 구현 방식으로 문제 접근하여 풀이

 

프로그래머스 : 추억 점수 (Lv.1)

https://school.programmers.co.kr/learn/courses/30/lessons/176963

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.ArrayList;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        ArrayList<Integer> ar = new ArrayList<>();
		
		for(int i=0;i<photo.length;i++) {
			int score = 0;
			
			for(int j=0;j<photo[i].length;j++) {
				for(int k=0;k<name.length;k++) {
					if(name[k].equals(photo[i][j])) {	
						score += yearning[k];
					}
				}
			}
			
			ar.add(score);
		}
		
		int[] answer = new int[ar.size()];
		
		for(int i=0;i<ar.size();i++) {
			answer[i] = ar.get(i).intValue();
		};
        
        return answer;
    }
}

 

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

숫자 짝꿍  (0) 2024.02.25
실패율  (0) 2024.02.23
푸드 파이트 대회  (0) 2024.02.21
2016년  (0) 2020.08.31
모의고사  (0) 2020.08.01
반응형

Vue.js 2.0 라이프 사이클

Vue 라이프 사이클이란 Vue 인스턴스나 컴포넌트가 생성되고 소멸되기까진의 단계를 말하며 크게

Creation, Mounting, Updating, Destruction 으로 나뉜다.

<script> 
	new Vue({
		// vue instatnce 생성
	});
</script>

 

  • Creation돔 이전에 처리되므로 돔에 접근할 수 없다.
    • beforeCreate : 모든 훅 중에 가장 먼저 실행되는 훅
    • Created : data 와 events가 활성화되어 접근 가능하다.
  • 컴포넌트가 돔에 추가 되기 이전으로, Creation 단계에서 실행되는 훅이 라이프사이클 중에서 가장 처음 실행된다. 서버 렌더링에서도 지원되는 훅으로 클라이언트 단과 서버 단에서 모두 처리해야할때 처리하는 단계.

 

  • Mounting
    • beforeMount
    • mounted : 컴포넌트, 템플릿, 렌더링된 돔에 접근 가능한 단계.
      • Parent, Child mounted의 경우 created 훅은 부모, 자식 순으로 실행되지만 mounted는 child mounted 가 완료된 후에 parent mounted 가 실행되는 순서이다.
  • 렌더링 직전에 컴포넌트에 직접 접근할 수 있는 단계. 초기 렌더링 직전에 돔을 변경하고자 한다면 활용 할 수 있으나 컴포넌트 초기 세팅되어야하는 데이터는 created 단계를 사용하는 것이 주이다.

 

  • Updating
    • beforeUpdate : 컴포넌트의 데이터가 변하여 업데이트 사이클이 시작될때 실행
    • updated : 컴포넌트의 데이터가 변하여 재 렌더링이 일어난 이후에 실행된다.
  • 컴포넌트에서 사용된 반응형 속성들이 변경 또는 재 랜더링 발생 시 실행된다.

 

  • Destruction(해체 단계)
    • beforeDestory : 뷰 인스턴스가 제거 되기 직전에 호출된다.
    • destroyed : 뷰 인스턴스 제거가 된 이후에 호출된다.

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

 

반응형

'프로그래밍 > Vue' 카테고리의 다른 글

[Vue3] onMounted  (0) 2024.05.14
[Vue3] Computed  (0) 2024.04.26
[Vue.js] Props 란  (0) 2022.06.30
구구단 게임  (0) 2020.07.13
반응형

[Spring] AOP (Aspect Oriented Programming)

AOP는 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.

 

@Aspect
@Component
public class TimeTraceAop{

	@Around("execution(* hello.hellospring..*(..))")
	// @Around 어노테이션을 통해 어느 위치 하위(파라미터)에 적용할지 적용
	public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
		long start = System.currentTimeMillis();
		System.out.println("START : " + joinPoint.toString());
		try {
			return joinPoint.proceed();	
		} finally {
			long finish = System.currentTimeMillis();
			long timeMs = finish - start;
			System.out.println("END : " + joinPoint.toString() + " " + timeMs + "ms");
		}
	}
}

 

스프링의 AOP 동작 방식
  • AOP 적용 시, Controller 이후 프록시 Service + joinPoint.proceed() 이후 실제 Service가 동작 하는 방식으로 적용
반응형
반응형

연습문제 유형으로 구현 방식으로 문제 접근하여 풀이

프로그래머스: 푸드 파이트 대회 (Lv.1)

https://school.programmers.co.kr/learn/courses/30/lessons/134240

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

class Solution {
    public String solution(int[] food) {
        String answer = "";
		int[] cnt = new int[food.length];
		
		for(int i=1;i<food.length;i++) {
			int foodCnt = food[i];
			
			if(food[i]%2 == 1) foodCnt = food[i] - 1; 
			cnt[i] = foodCnt / 2;
		}
		
		for(int i=1;i<cnt.length;i++) {
			for(int j=0;j<cnt[i];j++) {
				answer += "" + i;
			}
		}
		
		answer += "0";
		
		for(int i=cnt.length-1;i>0;i--) {
			for(int j=0;j<cnt[i];j++) {
				answer += "" + i;
			}
		}
        
        return answer;
    }
}

 

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

숫자 짝꿍  (0) 2024.02.25
실패율  (0) 2024.02.23
추억 점수  (0) 2024.02.22
2016년  (0) 2020.08.31
모의고사  (0) 2020.08.01

+ Recent posts