주짓수 수련기 6 – Lasso Guard

얼마전에 배우게 된 라쏘 가드

한팔(왼팔)로 상대의 맞은편 팔(오른팔) 소매를 잡고 같은 방향 다리(왼팔)로 다시 얽어매어 고정시키는 형태의 가드. 소매를 강하게 잡고 있어야 해서 손가락에 부담이 꽤 되는데 다리로 옭아매는 부분 때문인지 상대를 압박하는 힘이 은근 강력하다.

  1. 기본 세팅 – 일반 오픈(혹은 클로즈) 가드 상태에서 라소 가드로 전환,
  2. 제일 처음 배운 스윕
  3. 두번째로 배운 오모플라타 전환
  4. 세번째로 배운 lassor to x-guard 스윕
  5. 오모플라타 전환 좀 어려운거 (데굴데굴?)
  6. 기타 등등등……
  7. 라소 가드 패스 – 이건 아직 제대로 못배워서 @_@

주짓수 수련기 5 – X-Guard Sweep

본 주짓수 도장에서 배운 X-Guard 후 백으로 넘어가는 것 외에 몇개가 더있어서 퍼옴

대충 4가지 sweep 방법이 있는듯 하다.

1. 본 주짓수에서 배운 x가드 후 상대 등으로 넘어가기 영상

2. x가드후 상대를 전방으로 넘어뜨린 후 가드 패스
3. x가드후 상대를 위쪽으로 넘긴 후 가드 패스
4. x가드후 상대 등쪽으로 넘기고 가드 패스
x가드 까지 가는 과정이 좀더 상세히 나온 영상

연습 부족으로 블루 벨트에게 써먹다가 역공당했던 기술 ㅠ.ㅠ

LeedCode – Longest Substring Without Repeating Characters 문제풀이 (난이도:중)

LeedCode – Longest Substring Without Repeating Characters 문제풀이 (난이도:중)

Given a string, find the length of the longest substring without repeating characters.

Examples:
Given “abcabcbb”, the answer is “abc”, which the length is 3.
Given “bbbbb”, the answer is “b”, with the length of 1.
Given “pwwkew”, the answer is “wke”, with the length of 3. Note that the answer must be a substring, “pwke” is a subsequence and not a substring.

public class Solution {
    public int lengthOfLongestSubstring(String s) {
        boolean[] cache = new boolean[255];
        int count = 0;
        int maxCount = 0;
        int head = 0, tail = 0;
        while(head < s.length()){
            if(cache[s.charAt(head)] != true){
                cache[s.charAt(head)] = true;
                maxCount = Math.max(head-tail+1, maxCount);
                head++;
            }
            else{
                cache[s.charAt(tail)] = false;
                tail++;
            }
        }
        
        return maxCount;
    }
}

주짓수 수련기 4 – Close Guard Pass

내 허리를 단단히 조이는 상대의 강력한 클로즈 가드를 뚫고 들어가자!

상대의 양 골반을 골반을 잡을 수 있을때 : 양 손으로 상대의 골반을 단단히 고정하고 몸을 틀어 그 힘으로 가드를 부수고 들어간다.

상대의 겨드랑이를 잡을 수 있을때 : 한쪽 무릎을 상대의 가랑이 사이에 넣어 그 힘으로 가드를 부수고 들어간다.

상대의 한쪽 팔을 컨트롤 할 수 있을때 상대의 한손을 제압하고 그쪽 방향의 다리를 축으로 일어서 중력의 힘으로 가드를 부수고 들어간다.

몇가지 변형들이 있는데 위에 것드이 가장 기본적인거 같다.

주짓수 수련기 3 – Scissors Sweep

주짓수 수련기 2 이후 갑작스런 수술로 2달간 주짓수를 또 쉬게 되었다.

다행히 수술도 잘 끝났고 회복 기간이 지난후 의사 선생님도 이제 운동해도 된다고 하셨고,

그후 웨이트 트레이닝을 하며 몸을 테스트 해본결과 별 이상이 느껴지지 않아 당산동 본 주짓수에 다시 나가기로 했다.

2달만에 다시 해본 스파링은 역시 아무것도 기억이 안나 엄청 허부적 대었다. 다행히 기본 가드 자세와 새우빼기, 브릿지는 다 기억이나

기초 스킬부터 다시 연습 해야 할듯 하다.

일단, 맨 처음 배웠던 Scissors Sweep 부터 정리해본다.

Codility – MaxCounters 문제 풀이 (난이도:중)

Codility – MaxCounters 문제 풀이 (난이도:중)

// you can also use imports, for example:
// import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
    public int[] solution(int N, int[] A) {
        
        int maxCounter = N+1;
        int counters[] = new int[N];
        for(int i = 0 ; i < counters.length ; i++){
            counters[i] = 0;   
        }
        
        int nextMax = 0;
        int curMax = 0;
        for(int i = 0 ; i < A.length ; i++){
            int counterNumber = A[i];
            int counterIndex = counterNumber - 1;
            
            if(counterNumber < maxCounter){
                if(counters[counterIndex] <= curMax){
                    counters[counterIndex] = curMax;
                }
                counters[counterIndex]++;
                nextMax = Math.max(nextMax, counters[counterIndex]);
            }
            else{
                curMax = nextMax;
            }
        }
        
        for(int i = 0 ; i < counters.length ; i++){
            if(counters[i] < curMax){
                counters[i] = curMax;   
            }
        }
        
        return counters;
    }
}

Codility – FrogRiverOne 문제 풀이 (난이도 : 하)

Codility – FrogRiverOne 문제 풀이 (난이도 : 하)

class Solution {
    public int solution(int X, int[] A) {
        // write your code in Java SE 8
        int leafList[] = new int[X+1];
        for(int i = 0 ; i < leafList.length ; i++){
            leafList[i] = -1;   
        }
        
        for(int i = 0 ; i < A.length ; i++){
            int leaf = A[i];
            if(leaf <= X ){
                if(leafList[leaf] == -1){
                    leafList[leaf] = i;
                }
                else{
                    leafList[leaf] = Math.min(i, leafList[leaf]);    
                }
            }
        }
        
        int result = 0;
        for(int i = 1 ; i < leafList.length ; i++){
            if(leafList[i] == -1){
                result = -1;
                break;
            }
            result = Math.max(result, leafList[i]);
        }
        
        return result;
    }
}

Codility – CountDiv 문제 풀이 (난이도 : 하)

Codility – CountDiv 문제 풀이 (난이도 : 하)

// you can also use imports, for example:
// import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
    public int solution(int A, int B, int K) {
        // write your code in Java SE 8
        int result = B/K + 1;
        if(A != 0){
            result -= ((A-1)/K + 1);
        }
        return result;
    }
}

Codility – PassingCars 문제 풀이 (난이도 : 하)

Codility – PassingCars 문제 풀이 (난이도 : 하)

// you can also use imports, for example:
// import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
    public int solution(int[] A) {
        // write your code in Java SE 8
        int toEast = 0;
        
        long pairCount = 0;
        
        for(int i = 0 ; i < A.length ; i++){
            if(A[i] == 0){
                toEast++; 
            } else{
                pairCount += toEast; 
            }
        }

        if(pairCount > 1000000000){
            return -1;   
        }
        
        return (int)pairCount;
    }
}

Codility – Missing Integer 문제 풀이 (난이도 : 하)

Codility – Missing Integer 문제 풀이 (난이도 : 하)

// you can also use imports, for example:
// import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
    public int solution(int[] A) {
        // write your code in Java SE 8
        
        boolean checker[] = new boolean[A.length + 1];
        
        for(int i = 0 ; i < A.length ; i++){
            int value = A[i];
            if(value > 0 && value < checker.length){
                checker[value] = true;
            }
        }
        
        for(int i = 1 ; i < checker.length ; i++){
            if(checker[i] == false){
                return i;   
            }
        }
        
        return checker.length;
    }
}