1.문제 및 에러는 영어로 검색해야 한다.
당연한 이야기지만 한글로 작성된 글과 영어로 작성된 글의 검색 갯수부터 차이나고
글의 질 또한 영문 검색이 뛰어나다.

그렇기 때문에 한국어 버전 지원이 된다고 하더라도
영문 버전으로 사용해 해외 개발자들과의 공통분모를 만들고
에러, 접근 등의 메세지를 그대로 검색해 빠르게 해결할 수 있다.


2.문장은 5형식이 존재하는데 1~5형식은 아래와 같이 구성되어 있다.
1형식 - 주어 + 동사
2형식 - 주어 + 동사 + 보어
3형식 - 주어 + 동사 + 목적어
4형식 - 주어 + 동사 + 목적어(간접) + 목적어(직접)
5형식 - 주어 + 동사 + 목적어 + 보어(목적보어)


3.빠르게 영어로 된 지문을 읽기 위해서는 여러가지 방식을 사용할 수 있는데
영어 어순 그대로 빠르게 읽는 방식 또는 단어 몇개씩 끊어 읽는 것이 있고
기법으로는 스캐닝(목차와 검색을 활용한 핵심 읽기)과
스키밍(시작 또는 끝에 기술된 요점만 파악하기) 등이 있으며
그림이 있는 경우에는 그림을 떠올리며 내용을 이해하면 빠르게 읽을 수 있다.


4.네이버 영어사전 익스텐션을 사용할 경우
모르는 단어를 더블클릭해 즉각적으로 사전 검색결과가 나오기 때문에
필요에 따라 즉각적으로 단어의 확장을 할 수 있다.

'우클릭 -> 한국어(으)로 번역'기능보다는 
시간이 조금 걸리더라도 영어로 된 문서을 읽으며
단어를 떠올리기 힘든 경우 사전 익스텐션을 사용해
조금씩 독해력을 올리는 방식을 사용해야 한다.

하지만 사용 도중 단어의 뜻이 생각과 다르거나
해석한 내용이 이상하다고 생각되면 기술 용어 사전을 참조해야 한다.


5.싱글톤 패턴(Singleton pattern)은 하나의 인스턴트만 생성해 사용하는 패턴으로
동일한 인스턴트를 재생성하지 않고 초기에 생성한 인스턴트를 활용한다.

싱글톤으로 구현한 인스턴트는 전역이기 때문에 
다른 클래스의 인스턴트들과 데이터 공유가 가능하며
초기 생성시에만 객체의 할당이 필요하기 떄문에
메모리 낭비를 방지할 수 있다.

하지만 하나의 싱글톤이 너무 많은 기능을 하거나 데이터를 공유하면
객체지향 원칙 중 하나인 개방/폐쇠 원칙이 위배될 수 있으며
멀티 스레드 환경에서 동기화 문제로 2개가 생성될 수 있다.

공통된 객체를 여러개 생성해야 하는 경우 전역으로 생선되는
싱글톤 클래스를 만들어 접근이 편하게 하거나
인스턴스가 하나인 것을 보증하고 싶을 때 사용해야 하지만
관리의 어려움 때문에 싱글톤이 반드시 필요할 때만 사용하는 것이 좋다.





(1).백준 1110 더하기 사이클은 일정 규칙에 따라 문자열을 가공한 다음
원래의 문자열로 돌아올 때 까지 걸리는 사이클을 구하는 문제였다.

문제는 어렵지 않았지만 주의할 조건들이 있었는데
while을 사용했기 때문에 무한루프에 빠지지 않게 주의해야 했고
0회차 때는 기존과 변경용이 같을 수 밖에 없어 cycle === 0 인 경우를 체크해
while문이 0회 때는 무조건 돌아가게 만들었다.

중간에 무한루프가 돌아서 debugger를 사용해 확인해보니
return `${secondNum}${thirdNum}` 부분에서 secondNum이 0인 경우에는
돌려보낼 필요가 없는데 돌려보내 문제가 되었다.
차라리 secondNum*10+thirdNum으로 진행했다면 문제가 없었는데
처리 방식을 string으로 구정하고 했기 때문에 조금 꼬인 것 같다.

if문을 통해 아래와 같이 분기를 해줘서 해결할 수 있었지만

    if(secondNum){
        return `${secondNum}${thirdNum}`
    }
    else{
        return String(thirdNum)
    }

 

다음 번에는 number타입으로 처리해보는 것도 좋을 것 같다.

let input = `1`
const changeNum = (str) =>{
    let thirdNum
    if(str.length === 1){
        str = '0'+str
    }
    let [firstNum, secondNum] = str.split('').map(Number)
    if(firstNum+secondNum >= 10){
        thirdNum = firstNum+secondNum -10
    }
    else{
        thirdNum = firstNum+secondNum
    }
    if(secondNum){
        return `${secondNum}${thirdNum}`
    }
    else{
        return String(thirdNum)
    }
}
let strNow = input
let cycle = 0

while (cycle === 0 || input !== strNow){
    cycle++
    strNow = changeNum(strNow)
}

console.log(cycle)

+ Recent posts