본문 바로가기

Algorithm18

[Algorithm] 없는 숫자 더하기 프로그래머스[초급] 문제 0~9 까지의 숫자가 있는데 주어지는 배열에서 0~9 까지의 숫자중 없는 숫자를 더하는 알고리즘 아주 간단한 문제였고, 다른 사람들의 풀이를 보면서 와... 뒤통수를 맞은 느낌이였다. 내가 풀이한 방식은 1. 주어진 배열을 문자열로 바꾼후 2. for문을 통해서 (0~9)로 돌림 // 3. numStr에 i값이 포함되는지를 확인하여 포함되지 않은 값을 더해주는 방식으로 처리하였다. - 다 풀고나서 생각해보니 만약에 0~9가 아니라 0~10 까지만되어도 내 풀이는 효과적이지 못했다. 단지 0~9 까지만에서만 사용할 수 있는 풀이였던것 같다. ============================================================================다른 .. 2022. 5. 27.
[Algorithm] 인형 제거 게임 프로그래머스[초급]알고리즘 룰을설명하자면 N x N 게임판이 있고 숫자가 1층부터 n층까지 쌓여있다. moves = {1, 5,4, 3 } // moves 라는 배열에 적혀있는 숫자 대로 해당 열의 숫자를 한개씩 뺴서 저장하고 저장된값중 2개연속된 숫자의 경우는 제거해준다 -> 제거시 +2 씩 점수가 더해진다. ** 문제는 간단했는데 풀면서 착각을해서 다시 풀었다 게임판안에 들어가는 이중배열 board[][] 가 { {1} , {2}, {3}, {4}, {5} } 이라고 한다면, {1} 은 5X5 게임판이라고 했을맨 가장 상단의 줄에 들어갈 요소 값들이다. 나는 {1} 이 1열에 들어갈거라고 착각을해서 수정이 조금 있었다. =============================================.. 2022. 5. 26.
[Algorithm] 키패드 누르기 프로그래머스 초급단계 키패드 누르기 알고리즘문제이다. 조건. 1. 1,4,7일경우 L(왼손으로 누르고) 2. 3,6,9일경우 R(오른손으로 누르고) 3. 0,2,5,8일경우 왼손과 오른손의 거리중 가까운 손으로 누른다 이때 동일한 거리에 있을 경우 매개변수로 투입된 손으로 누른다("left" -> L , "Right" -> R) ============================================================================ 아래는 나의 풀이이다. 1. 문제를 풀면서 가장 힘들었던건 0,2,5,8일때 왼손과 오른손 거리를 측정해서 가까운 거리의 손으로 누르는것을 표현하는게 힘들었다. == > 이것을 해결하기 위하여 번호를 누를때 마다 왼손(Left)과 오른손(Rig.. 2022. 5. 25.
[Algorithm] 숫자문자열과 영단어 숫자와 해당 숫자의 영문자를 -> 숫자로 나타내는 알고리즘으로 12ninezero3 --> 1293 으로 나타내는 알고리즘으로 나는 Map을 사용했다. 1. 가장먼저 바꿔야할 문자를 Key로 넣었고, 바뀔문자를 숫자로 넣었다. 2. 그후 map의 향상된 for문을 통해서 map.entrySet() 값을 하나씩 받아서 해당 map의 key 값과 value값을 확인할 수 있는데 이때 해당 Key값이 문자열 s에 포함되어있는지 확인 하고, 포함되어있다면 key값을 value 값으로 바꾸도록 코드를 만들었다. ====================다른분들의 방법으론==================== 보통. 배열을 많이 사용했고, 배열에 문자만 넣어서 배열을 1개만 사용하거나, 배열을 문자, 숫자 1개씩 만들거나.. 2022. 5. 24.
[Algorithm] 아이디 생성시 규칙에 따른 변경 후 생성 알고리즘 문제의 출처는 프로그래머스 이고, 문제는 회원가입시 아이디를 7단계의 규칙에 맞게 변형시켜주는 알고리즘이다. 1. 내가 짠 코드를 보자면 일단 정규표현식을 사용하지 않아서. 코드가 지저분하나 부분이 많이 있었다. 문제를 풀면서 Debug를 사용하여 변수의 변화되는 모습을 직접 보면서 어떻게 변경되고 어느 부분에서 실수가 발생 했는지 확인할 수 있었다. 해당 내용을 정규 표현식으로 표현할 경우 코드가 많이 짧아지고 간결해진다. 기호 설명 [] 한 개의 문자 [abc] a,b,c중 하나의 문자 [^abc] a,b,c 이외 하나의 문자 [a-zA-Z] a~z, A~Z 중 하나 ? 없음 또는 한개 * 없음 또는 한개 이상 + 한개 이상 {n} 정확히 n개 {n,} 최소한 n개 {n,m} n개부터 m개 까지 ^ .. 2022. 5. 23.
[Algorithm] 로또 최대 등수 및 최저 등수 구하기 프로그래머스 알고리즘 테스트 문제 중 [초급] 아래는 내가 문제를 풀이한 방법이다. 내가 풀이한 다른사람풀이와 비슷한게 있었는데 그 사람의 풀이는 for문을 돌릴때 향상된 for문을 돌렸다 향상된 FOR 문을 사용하니 횟수를 따로 지정해 주지 않고 for문을 돌리니 훨씬 간결한 느낌이 들었다. 코드의 실행 시간도 거의 차이가 없지만 1(ms) 차이 정도 났다 2022. 5. 21.
[Algorithm/MAP] MAP의 표현방법 MAP 안의 요소를 표현하는 방법에 대해서 알아보자 * map의 요소를 한번에 확인하는 방법 1. map의 KEY값을 .keySet() 함수로 Set 형태로 RETRUN 받을수 있다. iterator를통해서 값을 하나씩 꺼내서 .get(Key keyt) 함수를 통해서 Value 값을 리턴 받을수 있다. 2. map.entrySet() 함수를 통해서 Set 값을 리턴 받을수 있는데 이를 향상된 FOR문을 통해서 for( Entry entrySet : map.entrySet() ) entry는 Key값과 Value 값을 갖는 Set을 얻으며 , getKey(), getValue() 를 통해서 요소를 확인 할 수 있다. 3. Map을 values() 함수를 통해서 Collection 객체로 형변환이 가능하며 .. 2022. 5. 21.
[Algorithm] Map.getOrDefault 프로그래머스를 통해서 신고자 누적 알고리즘을 공부하면서 알게된 매서드이다. Map의 메서드중 하나이며 매개변수로 ( Map의 key값과, Default 값이 들어간다.) return 값은 Set 값이다. 아래를 보면 name 이라는 String[] 이있고 이름을 key 값으로 map에 넣고 있다. 이때 만약 key값이 이미 들어가있으면 해당 value 값을 1씩 증가 시켜주는 for문을 돌리고 있다. 이때 map.getOrDefault(name[i], 0)+1 을 통해서 해당 key값이 이미 들어가있다면 해당 key값의 value를 가지고 나오게 되고,, key 값이 map에 존재하지 않다면 0이 return되며 +1 하여 1이 출력되게 된다. 처음에 이 메서드가 있는줄 모르고 replace를 통해서 해.. 2022. 5. 20.