def solution(A, B):
    gop = 0
    result = 0
    an=[]
    for k in range(2):
        answer=[]
        for i in range(0,2):
            result = 0
            for j in range(0,2):
                gop = (A[k][j]*B[j][i])
                result = result + gop
            answer.append(result)
        an.append(answer)
    return an

# 아래는 테스트로 출력해 보기 위한 코드입니다.
a = [ [ 1, 2 ], [ 2, 3 ]];
b = [[ 3, 4], [5, 6]];
print("결과 : {}".format(productMatrix(a,b)));

# 위는 과거 내 코드이고(약 1년전) 아래는 현재 내 코드이다

def solution(lst, alst):
    ans = [[0] * len(alst[0]) for i in range(len(lst))]
    print(ans)
    for i in range(len(lst)):
            for k in range(len(lst[i])):
                print("first lst" , lst[i][k])
                for j in range(len(alst[k])):
                    ans[i][j] += lst[i][k] * alst[k][j]
    return ans


주어진 행렬을 곱해서 결과를 내는 문제이고 작년에 이미 한번 풀었던 문제이다.

새삼 다시 푸니 다른 느낌이고 무엇보다 많이 발전? 한것 같다 


저 코드를 더 쉽게 하기위해선 zip 함수를 사용하면 된다.



사실상 두번째 접근법을 제외하고 보면

결국은 피보나치이다..


두번째 접근 방법은 승선생이 알려주었다.

프로그래머스 문제를 계속 접하다 보면 결국 풀이 자체는 어렵지 않으나 

그 풀이에 접근하는 방법, 생각하는 방법, 유추하는 힘이 중요...


위 문제도 a,a,a, b,b를 나열하는 경우의 수를 구하시오와 같기에..

과거 내가봤었던 면접들(영업관리 등)과 기술면접은 확연히 달랐다.

가장 큰 차이라면 기술면접은 보면 볼수록 내가 무엇이 부족한가를 알수 있다는 점?

그리고 역시 기본이 제일 중요하다는 것.


기술면접을 보게되면 사실상 거의 공통의 질문들이 나올 수 밖에 없다.

그리고 여기서 크게 달라지지 않는다. 

그렇기에 결국은 기본적인것을 얼마나 잘 이해하고 있느냐, 이 차이가 가장 크다고 본다.




http://www.w3im.com/ko/howto/howto_js_dropdown.html


여기 있는 내용을 토대로 하여 웹서비스 메뉴바를 바꾸려 하였다.

그리고 이틀동안 뻘짓을 하였다.

그리고 실패하였다.


위 사진을 보면 코드 그대로 큰 변화없이 사용하는데

메뉴 버튼 모양을 바꾸고 싶어서 이것저것 만지던 중 드랍기능이 작동이 안되었다.

무엇때문인가 싶어서 모든 경우를 다 찾으며 했는데... 

정답은 저 빨간색 부분에 클래스였다.


저 부분이 없으면, 즉 클래스가 설정이 안되면 기능이 작동을 안한다.

정확히 말하면 드롭다운 메뉴가 발생하게 되는 classList.toggle("show") 기능이 작동을 안하였다.


아직도 왜 그런지 모르겠다.


그리고 이를 다 수정하여 내 코드에 옮기면 또 안된다.

매번 안된다.

자바스크립트 연습 겸 튜토리얼을 통해 게임 기능을 붙였다.

물론 이것도 미완성이다.


게임 성적을 기록하기 위해 자바스크립트 코드만을 사용하려 하는데

매우 이상하고 원하는 대로 안들어가진다.

게다가 너무 덕지덕지 느낌이 많이 나서 정리를 하고 싶은데 도저히 감이 안잡힌다.


확실히 자바스크립트를 써보니 제이쿼리가 얼마나 좋은지 뼈저리게 느낀다.

당분간은 제이쿼리를 안쓰고 이를 사용해서 코드를 짜보려 하는데 얼마만큼 될런지 ...



충격과 공포의 게임...


하노이의 탑의 경우 이를 패턴 확인 및 동적으로 접근하고자 했다가 함정에 빠졌다.

단순 옮기는 횟수를 구하는 것은 위에 처럼 하면 쉽게 나오지만

문제에서 원하는 것은 바로 실제로 옮긴 방법이기에 재귀로 접근하였다.


하노이는 중앙으로 옮기는 경우, 중앙에서 끝으로 옮기는 경우로 보는 것과

제일 큰수를 끝으로 옮기는 경우, 제일큰수-1 까지를 중앙으로 옮기는 경우, 두가지를 모두 복합적으로 생각해야한다.


또한 숫자를 옮긴다는 것을 start, temp, end로 구분하여 재귀를 돌때 이것이 변하게끔 조정하는게 핵심이다.

이부분이 제일 어렵다, 생각해내는게.

예를 들어 n=3인 경우에 1은 처음에 세번째 탑으로 가고 2를 옮긴 뒤 두번째 탑으로 가고 3을 옮긴뒤 첫번째 탑으로 간 다음 제일 마지막에 세번째 탑을 가야한다.

이렇게 탑을 움직이는 것을 start, end를 통해 표현하고 그럴 파라미터로 조정하게끔 하는것, 그것이 핵심이다.

그렇기에 재귀로 들어갈때 start, temp, end가 서로 다르게 바뀐다.




언어에 대한 이해는 프로젝트 란 생각으로

간단한 게임 한두개 만드는 중..

완성되면 미니게임으로 올려야지 

위는 못난 호야 맞추기(2초동안...원래는 도둑 잡기...)

위는 벽돌 부시기, 현재 공까지만 구현됨


지금은 아주 단순하지만 나중에 모든 것을 다 넣는다고 할 경우


1. 차트의 종류 설정

2. 해당 차트에 맞는 파라미터 버튼 생성

3. 버튼 클릭

4. 조건에 맞는 차트 그래프 보여주기.


크게 4가지로 나누고 이걸 다시 나누면.. 흠


1) 차트 종류를 입력받는 클래스

2) 1 정보를 받아서 버튼 생성 + 버튼 기능 

3) 2) 정보를 받아서 그래프 보여주기.


이렇게 클래스 짜면 되지않을까 싶음.

계속 서비스를 만들어 나가다 보니 마주하는 문제는 역시나 자바스크립트!!

제이쿼리는 그래도 나름 익숙해졌다 생각했지만 결국 이는 라이브러리를 활용하는 것이고

오리지널인 자바스크립트도 할줄 알아야 한다는 생각이 들다보니

지금은 계속 이쪽을 집중하고 있다.


오늘 중으로 마무리 짓고 얼른 스케줄러 개발로 넘어가야지

+ Recent posts