masterpiece-programming의 등록된 링크

키자드에 등록된 총 269개의 포스트를 확인하실 수 있습니다.

Tistory

[Swift] 프로그래머스 기능개발(lv. 2)

[Swift] 프로그래머스 기능개발(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 몇 일 째에 무슨 기능이 배포가 되는 것이 중요한 것이 아니고 '어떤 날에' 배포되는 기능의 '수'를 찾아내야 한다. 주어진 progresses를 100에서 뺀 수를 speeds로 나누면 남은 날이 나올 것이다. 만약 나누어 떨어지지 않으면 하루 더 걸리는 것이고. 이런 생각을 구현해보기 위해 progressingDay 라는 배..

Tistory

[Swift] 프로그래머스 행렬의 곱셈(lv. 2)

[Swift] 프로그래머스 행렬의 곱셈(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 행렬을 곱하라. 고등학교 이후로 오랜만에 보는 요구 조건이다. (요즘은 안배운다고...) 아무튼 곱셈을 할 수 있는 것만 주어지기 때문에, arr1의 원소들과 arr2의 각 원소의 n번째 원소들을 각각 곱하고 더해서... 새로운 행렬의 값들을 만들어내는 것이다. k번째의 j번째 인덱스들을 서로 곱해서 그 합을 새로운 원소로 ..

Tistory

[Swift] 프로그래머스 위장(lv. 2)

[Swift] 프로그래머스 위장(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 의상의 종류가 중요하다. 의상의 종류 별로 몇 개가 있는지를 알아보아야 한다. 전체 경우의 수를 알아내는 것이기 때문에, 의상의 종류 별 개수를 모두 곱하고, 모두 입지 않은 경우의 수 1을 빼주면 의상을 입을 수 있는 모든 경우의 수가 나올 수 있다. 첫 번 째 반복문에서는 dictionary를 활용해서 의상 별 아이템의 개수를 ..

Tistory

Apple Developer Academy 2기 '테크' 지원 합격 후기 - 4. 면접, 최종결과 편

Apple Developer Academy 2기 '테크' 지원 합격 후기 - 4. 면접, 최종결과 편 1. 면접을 보기 전까지 1차 합격 발표가 난 후, 준비를 따로하지는 않았다. 몇 가지 후기 아닌 후기를 들어보니 뭐 인싸가 살아남는 면접이다, 준비를 애초에 할 수 없는 면접이라 그냥 편하게 있어라 하는 말들을 많이 했다. 아마 그룹 면접인데 거기서 뭘 하지 않을까하는 추측이 있었지만, 그래도 내 서류는 한 번 더 보고 있으면 좋겠다는 생각에, 면접 보기 한 3일 전에 다시 지원한 서류를 꺼내서 쭉 보았다. 할게 뭐 코딩 공부 밖에 없어서 그 동안은 어플 계속 개발하고 스위프트 공부하고 알고리즘을 공부했다. 편안한 마음가짐과 신체 활동을 해주며 12월 말을 보내고 1월을 맞이했다. 이 생활을 3주간 경..

Tistory

[Swift] 프로그래머스 튜플(lv. 2)

[Swift] 프로그래머스 튜플(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 주어진 문자열 s를 잘게 분해해서 원래 표현하려고 했던 튜플을 만들어나가는 문제이다. 처음 문제를 보았을 때, 이해가 잘 되지는 않았지만 순서와 중복에 주의하면서 풀어나가야 겠다는 실마리를 잡을 수 있었다. 주어진 예제 결과 (2, 1, 3, 4)를 보면 이해가 조금은 더 쉽다. {(2), (2, 1), (2, 1, 3), (2, ..

Tistory

[Swift] 프로그래머스 H-Index(lv. 2)

[Swift] 프로그래머스 H-Index(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 논문이 인용된 횟수가 주어지는데, 이것을 가지고 'N번 인용된 논문의 개수'를 세고, N회 이상 인용된 논문의 수를 세야 한다. 그렇다면 계수를 활용해서 정렬을 하는 '계수정렬'을 사용하면 될 것이다. 0번 인용된 논문의 수 / 1번 인용된 논문의 수 / 2번 인용된 논문의 수 / 3번 인용된 논문의 수 / ..... 이렇..

Tistory

[Swift] 프로그래머스 [1차] 캐시(lv. 2)

[Swift] 프로그래머스 [1차] 캐시(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 캐시 교체 알고리즘은 모르기 때문에 따로 구글링을 해서 찾아보았다. https://dailylifeofdeveloper.tistory.com/355 LRU 알고리즘 (Least Recentely Used) 개념 및 구현방법 안녕하세요! daily_D 입니다! c 오늘은 페이지 교체 알고리즘 중에서 LRU에 대해서 공부..

Tistory

[Swift] 프로그래머스 괄호 회전하기(lv. 2)

[Swift] 프로그래머스 괄호 회전하기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 괄호가 소, 중, 대괄호 모두 등장하는 괄호문제이다. 올바른 괄호인지를 물어보는 것이 아니라, 문자열을 회전시키면서 그것이 올바른 괄호인지를 판별하고, 그 개수를 리턴해야 하는 문제이다. 문자열의 길이만큼 반복문을 필수적으로 돌아야 하고, 한 번의 반복마다 그 괄호가 올바른지 판별해야 하므로 이중 반복문을 사용해야 할 것 ..

Tistory

[Swift] 프로그래머스 예상 대진표(lv. 2)

[Swift] 프로그래머스 예상 대진표(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 배열이 아니기 때문에 쉽게 생각해보면, 1번 선수, 2번 선수 이렇게 변환을 해서 생각을 해보면 접근이 쉽다. 서로 경기를 하기 위해서는 1 - 2 / 3 - 4 / 5 - 6 / .... 이런 식으로 붙어 있어야 경기를 할 수 있다. 2 - 3의 경우는 경기를 할 수 없다고 생각을 하고 이에 맞추어 구현을 하면 될 것 같았..

Tistory

[Swift] 프로그래머스 점프와 순간이동(lv. 2)

[Swift] 프로그래머스 점프와 순간이동(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 건전지로 움직이는 거리를 최소화하려면...? 순간이동을 최대한 많이 하면 된다. 나는 처음부터 쌓아가는 것이 아니라, 거꾸로 distance를 절반 씩 나눠가면서 최소 건전지 사용량을 구하려고 했다. '그리디 문제' 같은 것이므로, distance가 2로 나누어 떨어지면 2로 나누어버리고 answer(건전지 사용량)을 누..

Tistory

[Swift] 프로그래머스 멀리 뛰기(lv. 2)

[Swift] 프로그래머스 멀리 뛰기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 뭔 문제지... 하다가 1칸일 때부터 5칸일 때까지 일일이 구해보았다. 1칸일 때는 1가지 밖에 없고(1칸) 2칸일 때는 2가지 밖에 없고(1칸 , 1칸 / 2칸) 3칸일 때는 3가지 밖에 없고(1칸, 1칸, 1칸 / 1칸, 2칸 / 2칸, 1칸) 4칸일 때는 위에 예시마냥 5가지 밖에 없고, 5칸일 때는 (1칸, 1칸, 1칸..

Tistory

[Swift] 프로그래머스 영어 끝말잇기(lv. 2)

[Swift] 프로그래머스 영어 끝말잇기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 문제가 길긴 했지만, '탈락하는 사람'이 누구인지, 몇 번 째 턴에서 탈락한 것인지를 구하면 되는 문제이다. 주어지는 String 배열은 이미 진행한 결과로, 누가 틀렸는지를 분석해내는 것이라고 생각하면 쉬울 것 같다. loop, person 변수에는 현재 진행되고 있는 라운드, 현재 단어를 말하고 있는 사람을 계산하여 각..

Tistory

[Swift] 프로그래머스 카펫(lv. 2)

[Swift] 프로그래머스 카펫(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 중앙에는 노란색으로 칠해져있고, 테두리는 갈색인 카펫이라고 했다. 그렇다면, 내부에는 정사각형이든 직사각형이고, 테두리는 1줄로 고정되어 있는 것이다. 그러면 전체 카펫 가로 세로 길이가 각각 x, y라고 한다면, 노란색 부분의 면적은 항상 (x - 2) * (y - 2) 가 된다. 그러면 한 칸의 길이를 1 * 1로 생각하고, 전..

Tistory

[Swift] 프로그래머스 N개의 최소공배수(lv. 2)

[Swift] 프로그래머스 N개의 최소공배수(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 최소공배수를 구하는데, 인자가 두 개가 주어지지 않고 배열로 주어진다. 반복문으로 최소공배수를 찾아주는 로직을 구현해주면 된다. 최소공배수를 찾기 위해서는 최대공약수를 찾아주어야 한다. 두 수의 최소공배수는 두 수의 곱 / 최대공약수 로 찾을 수 있기 때문이다. 아래에서는 lcm, gcd라는 함수로 최소공배수와 최대공약..

Tistory

[Swift] 프로그래머스 이진 변환 반복하기(lv. 2)

[Swift] 프로그래머스 이진 변환 반복하기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 반복의 횟수는 모르겠지만, 주어진 조건 1, 2 대로 계속 숫자를 깎아서 결국 "1"이 될 때 까지 내부의 반복문을 몇 번을 거쳤는지만 파악하면 된다. while문을 활용하여 없어진 0의 개수를 count 하여 누적합 처리하고, 필터를 사용하여 "1"로만 구성되게 한 다음, 그 문자열의 길이를 다시 이진수로 변환하는 ..

Tistory

[Swift] 프로그래머스 피보나치 수(lv. 2)

[Swift] 프로그래머스 피보나치 수(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 피보나치 수는 항이 커질 수록 감당하지 못하는 수로 발전하는 측면이 있다. n이 10만까지 주어지기 때문에 이 부분을 잘 생각해야 한다. 문제에서는 1234567로 나눈 나머지를 반환하라고 했는데, 여기서 중요한 것은, 항상 An+1 항을 구할 때마다 1234567로 나누는 것과 구하고자 하는 An 항을 모두 구하고 나서 1..

Tistory

[Swift] 프로그래머스 다음 큰 숫자(lv. 2)

[Swift] 프로그래머스 다음 큰 숫자(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 다음 큰 수의 정의는 이진수에서 1의 개수가 같으나, 십진법에 따르면 이전 수보다 더 큰수를 의미한다. 예를 들어 8이 주어진다면, 이진법으로 1000(2) 이고, 그 다음으로 큰 수는 10000(2) 즉, 16이 다음 큰 숫자가 되는 것이다. 일단 1을 카운팅하는 변수를 두고, 현재 숫자에 1을 더하고, 그것을 이진수로 ..

Tistory

[Swift] 프로그래머스 짝지어 제거하기(lv. 2)

[Swift] 프로그래머스 짝지어 제거하기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 짝을 지어 제거하는 것이기 때문에, 스택에 쌓았을 때, 이전에 쌓여있던 것과 새로 들어올 것이 같으면 removeLast()를 활용해서 같은 것들을 골라낼 수 있다. 앞에서부터 없애가는 것이기 때문에 이 방법을 활용할 수 있는 것이다. 마지막에 stack에 어떤 것이 남아있다면, 더이상 제거가 불가능한 것이고, stack..

Tistory

[Swift] 프로그래머스 JadenCase 문자열 만들기(lv. 2)

[Swift] 프로그래머스 JadenCase 문자열 만들기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 첫 문자만 대문자이고, 나머지는 소문자인 문자열을 만들면 된다. 숫자가 맨 처음 문자이면 숫자는 그대로 쓰면 된다. 문자열 처리하는 문제이기 때문에, components를 잘 활용하고, 첫 문자가 문자인지 숫자인지 구별해서 잘 처리해주면 된다. 만약 첫문자가 숫자라면, 단순히 lowercased()로만 해..

Tistory

[Swift] 프로그래머스 최솟값 만들기(lv. 2)

[Swift] 프로그래머스 최솟값 만들기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 열심히 만들면 된다. 한쪽은 오름차순으로 정렬하고, 한쪽은 내림차순으로 정렬해서 차례로 곱한 값을 누적하여 합하면 된다. 나는 주어진 A를 오름차순 정렬하고, B를 내림차순 정렬했다. innerA의 값을 직접 바꾸는 방법으로 메모리를 더 쓰는 것을 방지해보았다. enumarated()를 사용하여 인덱스와 원소를 함께 불러서..

Tistory

[Swift] 프로그래머스 올바른 괄호(lv. 2)

[Swift] 프로그래머스 올바른 괄호(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 lv. 2 초반이라 lv. 1보다 쉬운 레벨의 것이 나오기도 한다. 스택의 개념을 잘 생각하면 풀 수 있는 문제이다. 스택으로 해서 직접 괄호를 넣었다 뺐다가 할 수도 있지만, count 개념을 넣어서 할 수도 있다. "(" 가 들어오면 +1을 하고, ")"가 들어오면 -1를 하는 것. 그런데 전체적으로 합쳐지면 ")("도 ..

Tistory

Apple Developer Academy 2기 '테크' 지원 합격 후기 - 1. CV 편(CV 공개)

Apple Developer Academy 2기 '테크' 지원 합격 후기 - 1. CV 편(CV 공개) 0. Apple Developer Academy를 알게 되다. 2022년 10월이었다. 한창 멋쟁이 사자처럼 1기 백엔드 스쿨의 1차 팀 프로젝트를 끝내고 마지막 프로젝트를 하고 있었다. 자바 그리고 스프링부트와 친해치고 있었고, 이제 어색한 감이 갓 사라졌던 그 때, 팀 프로젝트를 했던 팀원 중에 한 분이 멋사 끝나고 뭐할꺼냐고 물어보았다. '잘 모르겠네요... 취업하지 않을까요?' 'SSAFY 삼수 해봐야 하나...?' '진짜 아무데나 취직을 해야하나...?' 팀원은 나에게 맥북과 아이폰을 쓰는 것을 보고 '애플 디벨로퍼 아카데미'라고 있는데 애플에서 하는 교육기관이라고 있는데 싸피랑 비슷하게 교육..

Tistory

Apple Developer Academy 2기 '테크' 지원 합격 후기 - 2. 포트폴리오 편(포트폴리오 공개)

Apple Developer Academy 2기 '테크' 지원 합격 후기 - 2. 포트폴리오 편(포트폴리오 공개) 0. 개발자 포트폴리오는 어떻게 써야 하나? CV를 다 썼으니, 이제 또 다른 제출서류인 포트폴리오를 작성해야 한다. 일단 포트폴리오, 어디서 많이 들어보긴 했는데 거기엔 무엇이 들어가고 어떻게 써야 하는 것일까...? 일단 작성에 들어가기 전에 개발자 포트폴리오를 구글링 해보았다. 디자이너 포트폴리오는 프로젝트 위주로 설명하듯이 하는 것이니까... 개발자 포트폴리오는 뭔가 다른가 해서 써어칭을 충분히 해보았다. 찾아보다 보니, 포트폴리오라는 게 그다지 직종별로 다른 것 같지는 않았다. 어떤 상황 별로 형식은 달라지는 것 같았다. 예를 들면 지원 회사가 원하는 양식, 분위기? 하지만 공통적으..

Tistory

Apple Developer Academy 2기 '테크' 지원 합격 후기 - 3. 특별한 점, 온라인 테스트편

Apple Developer Academy 2기 '테크' 지원 합격 후기 - 3. 특별한 점, 온라인 테스트 편 1. 특별한 점 지원서류를 마무리하고 나니 마지막으로 남은 것이 있었다. 250 단어 분량의 나의 특별한 점 소개하기. 이것은 제출하지 않아도 무방하다고 했지만, 솔직히 선택이라고 하는데, 적을 수 있는 거면 적어야 한다고 본다. 할 수 있는 것은 모두 해봐야 하지 않겠나... 그래서 이런 특이한 문항을 받아 들고, 무엇을 써볼지 고민해 보았다. 난 호기심이 너무나 많다. 많은 것들에 발을 담가보기도 하고 속칭 찍먹을 많이 하기도 하는 사람이다. 호기심을 가지고 재미있게 살아가는 사람이라는 것을 어필을 해보고자 했다. 개인적인 부분이 들어가 있어서 완벽하게 공개하지는 못하지만, 진심이 담긴 나..

Tistory

[Swift] 프로그래머스 햄버거 만들기(lv. 1)

[Swift] 프로그래머스 햄버거 만들기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 무엇인가 쌓여가는 모습이기 때문에 스택을 활용하여 푸는 방법을 택했다. 스택에 4개 이상의 원소가 들어왔을 때, 순서대로 1, 2, 3, 1 인지를 보고, 만약 맞다면, 그 순서를 제외한 스택만을 남겨놓고 answer에 누적합을 더하게 된다. 모든 반복을 거치면 답변이 구해져 있을 것이다. 3. 코드 import Foun..

Tistory

[Swift] 프로그래머스 신고 결과 받기(lv. 1)

[Swift] 프로그래머스 신고 결과 받기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 '메일'이 보내진 횟수를 세야하는 것이 포인트이다. 한 사람이 동일 유저를 신고하는 것은 1회로 처리한다는 점도 유의해야 한다. 그래서 reportCount 딕셔너리에는 id를 key로, set을 value로 만들어 신고한 사람이 총 몇 명인지 셀 수 있게 해주었다. mailCount는 reportCount의 set의 크..

Tistory

[Swift] 프로그래머스 개인정보 수집 유효기간(lv. 1)

[Swift] 프로그래머스 개인정보 수집 유효기간(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 Swift 기준으로 가장 최근에 나온 lv. 1 문제이다. 2023 카카오 블라인드 채용 문제로 등장한 문제이다. 날짜 처리가 관건일 줄 알았는데, 그건 아니었고, 모든 달이 28일로 되어 있다고 가정을 하는 바람에 문제가 좀 더 쉬워졌다. 문자열을 마침표를 기준으로 분해하고, 오늘을 기준으로 문서 작성일로부터 ..

Tistory

[Swift] 프로그래머스 옹알이 (2)(lv. 1)

[Swift] 프로그래머스 옹알이 (2)(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/133499 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 lv. 0의 옹알이 (0)과 비슷한 문제인데, '연속해서 발음'하는 것을 하지 못한다는 것을 유의해야 한다. 그래서 옹알이 (0)에서는 replacingOccurrences(of: "aya", with: "1")로 모두 치환을 하였지만, 여기에서는 각각 1, 2, 3, 4로 치환해주었다. 아래 코드에서 반복문과 map 함..

Tistory

[Swift] 프로그래머스 성격 유형 검사하기(lv. 1)

[Swift] 프로그래머스 성격 유형 검사하기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr (문제가 개길다....) 2. 접근 문제가 너무 길어서 읽다가 포기할 뻔 했다. 하지만 천천히 읽어보다 보니, 그다지 어려운 것이 아니라, 딕셔너리를 활용해서 적절하게 값을 바꿔주고, 점수만 세주면 되는 것이었다. 4점 이라면, 패스를 하고, 4점 미만이라면, 4 - i 만큼의 숫자를 더해주고, 4점 초과라면 i - 4 만큼의..

Tistory

[Swift] 프로그래머스 문자열 나누기(lv. 1)

[Swift] 프로그래머스 문자열 나누기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 두 가지를 세주면 된다. 특정 글자가 나오는 횟수, 특정 글자가 아닌 것이 나오는 횟수. 그리고 문자열을 분리할 때마다, 그 횟수를 다시 세는 것이 필요하다. 아래 코드에서 반복문의 첫 번째 if문은 s의 끝까지 모두 반복이 끝났을 경우, 남아있던 배열을 답변 배열에 넣어주는 역할을 한다. 두 번째 if문은 count1,..

Tistory

[Swift] 프로그래머스 키패드 누르기(lv. 1)

[Swift] 프로그래머스 키패드 누르기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/67256 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 문제를 잘 읽어보면 왼쪽의 1, 4, 7은 왼손으로, 오른쪽의 3, 6, 9는 오른손으로 필히 누르게 되어 있다. 그렇다면, 2, 5, 8, 0을 누를 때의 규칙만 잘 정해주면 된다. 2, 5, 8, 0을 눌러야 할 때는 양손 중에 "그 버튼과 현재 가까이 있는 위치의 손으로 누른다"라고 하였다. 그러면 현재 위치를 계속 ..

Tistory

[Swift] 프로그래머스 크레인 인형뽑기 게임(lv. 1)

[Swift] 프로그래머스 크레인 인형뽑기 게임(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 포인트 1) 각 캐릭터는 숫자로 표시되며, 숫자가 같으면 같은 캐릭터이다. 이차원 배열로 입력이 주어지고, moves로는 특정한 열의 위치가 주어져 있다. 한 번의 반복마다 그 열로 가서 '인형을 뽑거나 허탕을 쳐야'한다. 포인트 2) 예시 설명에서 맨 오른쪽에 있는 부분이 스택과도 같다. 그렇다면, moves가 만..

Tistory

[Swift] 프로그래머스 기사단원의 무기(lv. 1)

[Swift] 프로그래머스 기사단원의 무기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 약수의 개수를 세는 로직이 가장 중요하다. number가 10만이기 때문에 O(N) 시간으로 약수를 찾으면 타임 오바가 난다. 여기서는 루트까지만 약수의 개수를 셌다. 약수를 세려고 전체를 세지 않아도 되기 때문이다. 예를 들어보자면, 16의 경우 1, 2, 4, 8, 16 이렇게 약수가 존재하는데, 16을 1, 2, ..

Tistory

[Swift] 프로그래머스 신규 아이디 추천(lv. 1)

[Swift] 프로그래머스 신규 아이디 추천(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 주어진 대로 단계별 처리를 해주도록 필터나 맵을 써주면 되는 문제였다. 다만, 4, 5단계를 마치고 난 후 6, 7단계에서 특정 문자를 지웠는데, 마침표가 남아있어서 통과가 안 되었었다. 그래서 6, 7단계를 거치다가 마지막 문자가 마침표일 경우, 한 번 더 removeLast()를 해주는 것으로 보완을 하였다. 구현 ..

Tistory

[Swift] 프로그래머스 체육복(lv. 1)

[Swift] 프로그래머스 체육복(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 여벌 체육복이 있는 학생만 다른 학생에게 체육복을 빌려줄 수 있습니다. 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다. 이 두 가지 조건을 가볍게 보았다가 한 번 코드를 쓰고 엎었다. 여벌이..

Tistory

[Swift] 프로그래머스 명예의 전당 (1)(lv. 1)

[Swift] 프로그래머스 명예의 전당 (1)(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 honorList 라는 배열의 크기가 k가 넘지 않게끔 조절해주면서, 매번 내림차순으로 정렬하면서 마지막 인덱스의 원소를 계속 구해주면 되는 문제였다. honorList의 크기가 3이 되는 순간부터, 마지막 숫자가 score[i] 보다 작다면, honorList의 마지막 수를 새로운 score[i]로 바꾸고 sort..

Tistory

[Swift] 프로그래머스 숫자 짝꿍(lv. 1)

[Swift] 프로그래머스 숫자 짝궁(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 "두 수에서 공통된 숫자를 모아서 가장 큰 수를 만들어라" 요약하면 이렇게 된다. 그러면 0~9까지의 수만 하나씩 필터링 하면서 세면 되지 않을까? 그리고 나중에 이 숫자를 다시 내림차순으로 정렬해야 하는데, 그 개수를 index로 활용해서 세면 되지 않을까? 라는 생각이 들었다. 정렬의 방식 중 계수 정렬이 떠올랐고, 이를..

Tistory

[Swift] 프로그래머스 가장 가까운 같은 글자(lv. 1)

[Swift] 프로그래머스 가장 가까운 같은 글자(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 현재 인덱스와 이전 인덱스를 잘 구분해서 계산하면 된다. comeout 이라는 array에는 한 번이라도 등장했던 Character를 집어넣는다. 이것과 비교하여 index 차이를 answer에 집어넣거나, -1을 집어넣는다. 등장한 것과 등장하지 않은 것을 잘 구분하면 된다. 3. 코드 import Founda..

Tistory

[Swift] 프로그래머스 로또의 최고 순위와 최저 순위(lv. 1)

[Swift] 프로그래머스 로또의 최고 순위와 최저 순위(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 0은 당첨 번호로 맞춰놓거나 틀린 번호로 할 수 있다. 다른 말로 바꿔보자면, 0이 있는지 없는지에 따라서 Rank가 달라질 수 있다는 것. 리턴할 최고 순위와 최저 순위는 0이 포함된 갯수를 빼거나 더해서 나오게 된다. 순위는 참고로 숫자가 낮을 수록 높은 것이다. 이를 고려해서 반복문을 구성해야 한다. ..

Tistory

[Swift] 프로그래머스 과일 장수(lv. 1)

[Swift] 프로그래머스 과일 장수(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 처음 문제를 봤을 때 단순히 내림차순으로 하여 m개 만큼 쌍을 지어 묶으면 된다고 생각했다. 어느 쌍에서 [가장 작은 수 * m] 한 것을 누적합하면 result를 얻을 수 있을 것이라 생각했다. 아래 코드에는 sortedScore에 내림차순된 score가 들어가 있다. 그리고 순회를 돌면서 tempArray에 sortedS..

Tistory

[Swift] 프로그래머스 푸드 파이트 대회(lv. 1)

[Swift] 프로그래머스 푸드 파이트 대회(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 공정하게 왼쪽, 오른쪽이 구분되므로 먼저 왼쪽의 문자열을 먼저 구하고, 오른쪽의 배열은 왼쪽의 배열을 reversed() 한 다음 0을 기준으로 붙이면 되겠다는 생각을 했다. leftSideArray를 만들고 거기에 food[i]의 절반 만큼만 Character(String(i))를 append 해주었다. 순차적으로 ..

Tistory

Github Readme Stats 버그 해결(file an issue at https://tiny.one/readme-stats)

Github Readme Stats 버그 해결(Something went wrong! file an issue at https://tiny.one/readme-stats) 어제부터인가 깃허브에 들어가서 프로필을 봤는데 갑자기 이런 오류문을 발견할 수 있었다. 몇 문제 풀었는지 어떤 언어를 제일 많이 쓰는지를 시각적인 정보로 알려주는 github-readme-stats에 어떤 버그가 생긴 것인가 하고 해결 방법을 알아보았다. 깃의 어떤 정책이 바뀐 것인가... 아니면 라이브러리 자체의 문제인가 했는데, 깃이슈에서 해결 방법을 알 수 있었다. 이 사람들도 깃의 문제이긴 한데 무엇이 문제인지는 잘 모르는 듯... ** 해결방법 1) readme stats가 있는 MD 파일을 연다. 레포에서 본인의 이름으로 만..

Tistory

[Swift] 프로그래머스 [1차] 다트 게임(lv. 1)

[Swift] 프로그래머스 [1차] 다트 게임(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 문제를 잘 이해하는 것이 중요했다. 1 ~ 9 사이의 순서에 따라 주어진 것을 정확하게 구현해내면 어려움 없이 구현할 수 있는 전형적인 구현 문제였다. dartResult를 한 Character로 끊어서 읽고, 숫자 또는 문자라면 그 안에서 적절하게 분기를 해주고, 만약 그 둘이 아니라면 * or # 이므로 그에 따라..

Tistory

[Swift] 프로그래머스 소수 찾기(lv. 1)

[Swift] 프로그래머스 소수 찾기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12921 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 소수를 판별하는 것이 아니라 주어진 수보다 작은 자연수 중에서 소수가 몇 개 인지를 구하는 문제이다. n개의 원소를 가지는 배열을 만들어서 차례로 올라가는 수를 numArray에 세팅해준다. 그런 다음 numArray를 순회하는데, 여기서 중요한 것은 전부를 순회하게 되면 시간초과가 난다는 점이다. n이 100만이기 때문에 n..

Tistory

[Swift] 프로그래머스 - 모의고사(lv. 1)

[Swift] 프로그래머스 - 모의고사(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 다들 찍는 패턴이 다르기 때문에 하나의 패턴을 상수로 지정해주었다. 그런 다음 answer과 그 상수들을 비교하여 점수를 리턴해주고, 배열을 정렬해서 차례로 뽑아주면 되겠다는 생각을 했다. calculateScore 함수는 answers와 student를 인자로 받는다. answer는 전체 원소를 순회하고, student는 ..

Tistory

[Swift] 프로그래머스 실패율(2019 KAKAO Blind Recruitment)(lv. 1)

[Swift] 프로그래머스 실패율(2019 KAKAO Blind Recruitment)(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 실패율의 정의를 충분하게 읽으면 된다. "스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어의 수" 주어진 배열 stages는 현재 사용자가 멈춰있는 스테이지의 번호가 담겨있다. 그렇다면, 각 스테이지 별로 몇 명의 사람이 멈춰있는지를 세고,..

Tistory

[Swift] 프로그래머스 두 개 뽑아서 더하기(lv. 1)

[Swift] 프로그래머스 두 개 뽑아서 더하기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/68644 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 순서 상관 없는 두 수를 더한 값을 중복 없이 구하면 된다. Set을 사용하여 두 원소를 합한 값을 계속 집어넣고, 모든 배열 순회가 끝나면, Set을 Array로 바꿔주고 sorted() 하여 return 하면 된다는 생각을 하였다. 중복 없음 = Set 을 떠올리고 Set -> Array 변환이 용이하다는 사실을..

Tistory

[Swift] 프로그래머스 2016년(lv. 1)

[Swift] 프로그래머스 2016년(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12901 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 여러 해를 구하는 것이 아니고 2016년 안의 일자를 구하는 것이기 때문에 상수만 잘 설정해주면 된다. 1월이면 totalDay(일자를 내부 변수로 받은 것)에 4를 더해서 7로 나눈 나머지를 구한다. weekArray의 인덱스에 따라 요일이 출력되는데, 1일이 목요일이었기 때문에 이렇게 설정하였다. 나머지 달의 경우, '요일..

Tistory

[Swift] 프로그래머스 콜라 문제(lv. 1)

[Swift] 프로그래머스 콜라 문제(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/132267 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 콜라를 먹으면서 글을 쓰고 있다. 콜라는 좀 기계들이 무한 생산하여 무료로 제공되었으면 좋겠다. 무튼 이 문제에서는 빈병과 먹은 콜라 수를 잘 나누어 갈라야 한다. 반복의 횟수를 알 수 없기 때문에 while문을 활용하면 될 것이다. 코드의 설명은 아래와 같다. 만약 빈 병의 개수가 a로 나누어 떨어진다면, 먹은 콜라는 (빈..

Tistory

[Swift] 프로그래머스 삼총사(lv. 1)

[Swift] 프로그래머스 삼총사(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/131705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 삼총사... 세 개의 원소를 가지고 해야 한다. 주어지는 number의 배열의 길이가 최대 13이므로 4~5중 반복문도 상관없으니 삼중반복을 통해 3개의 원소를 고르는 경우의 수를 모두 찾아 더해주면 되는 '간''단'한 문제이다. 원소의 순서는 상관이 없으니 '조합'이다. 그렇기에 앞에서부터 차례로 반복문을 돌려주면 되고, 이중..

Tistory

[Swift] 프로그래머스 문자열 내 마음대로 정렬하기(lv. 1)

[Swift] 프로그래머스 문자열 내 마음대로 정렬하기(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 일단 접근은 쉽다. n번째 인덱스를 기준으로 정렬하라는 것. 마지막 입출력 예를 보면 오름차순 정렬을 기본으로 해야 한다는 것을 알 수 있다. 그럼 먼저 오름차순 정렬을 하고, 그 다음에 새로 n번째 인덱스를 기준으로 정렬을 해주면 된다는 생각을 했다. sorted(by:) 함수는 파라미터에 쓰여있는 기준에 ..

Tistory

[Swift] 프로그래머스 K번째 수(lv. 1)

[Swift] 프로그래머스 K번째 수(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 어떤 배열을 i번째부터 j번째까지 잘라서 오름 차순 정렬을 하고 그 중 k번째 숫자를 구해라. 말 그대로입니다. 임시 배열을 반복문 안에 두고, 거기에 i번째부터 j번째까지 원소를 담고 정렬을 해서 k번째 수를 answer 배열에 담아서 최종 출력해주었다. 3. 코드 import Foundation func solution(_..

Tistory

[Swift] 프로그래머스 숫자 문자열과 영단어(lv. 1)

[Swift] 프로그래머스 숫자 문자열과 영단어(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/81301 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 옹알이에서 사용했던 replacingOccurrences 그리고 dictionary를 사용하면 쉽게 풀 수 있다. 아래 코드에서는 dict를 두고 상수로 사용하고 있으며, innerS를 두어 내부의 문자들을 바꿀 수 있도록 하였다. 그러고 마지막에 리턴은 Int로 해주면 쉽게 할 수 있다. 문제만 길다; 3. 코드 ..

Tistory

[Swift] 프로그래머스 시저 암호(lv. 1)

[Swift] 프로그래머스 시저 암호(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12926 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 영어 대, 소문자, 공백밖에 없기 때문에 AsciiValue를 사용하면 되겠다는 생각을 했다. 대문자 A가 asciiValue int로 65이고, 소문자 a가 97이기 때문에, 이 수를 빼서 생각하면 되고, 나머지 공백은 -1로 하여 별도로 처리하면 되겠다는 생각을 했다. 아래 코드의 반복문에서는 input을 순환하여 돌면서 ..

Tistory

[Swift] 프로그래머스 최소직사각형(lv. 1)

[Swift] 프로그래머스 최소직사각형(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 전체를 비교해봐야 하나 잠시 머리가 아팠지만, 이차원 배열로 주어져있고 명함은 가로로 꽂으나 세로로 꽂으나 상관없는 것이라는 것을 캐치했다. 주어진 배열은 가로, 세로로 주어졌지만, 결과값 뽑아내는 입장에서는 그게 가로인지 세로인지 전혀 중요하지 않다. 이차원 배열 내부의 원소로 있는 배열이 내림차순으로 정렬되어 있다면, s..

Tistory

[Swift] 프로그래머스 비밀지도(lv. 1)

[Swift] 프로그래머스 비밀지도(lv. 1) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 이 문제는 이해는 됐는데, 어떤 식으로 연산해야 할 지 생각하는데 오래걸렸다. 뭔 연산을 하면 있는곳 없는곳 나오는 그게 있으니까 문제를 냈을 껀데, 이게 그 비트연산인가 하는 개념어만 생각나고 어떻게 풀 지 감이 안왔다. 그래서 비트 연산을 구글 선생님을 통해 개념 정리를 하고, 그제야 쉽게 풀 수 있었다. 아래 코드 5번 라..

Tistory

[Swift] 프로그래머스 평행(lv. 0)

[Swift] 프로그래머스 평행(lv. 0) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/120875 2. 접근 두 점을 공통으로 지나는 '일차함수'를 생각해보았다. 선분을 일차함수로 생각해본다면, 두 점 사이의 기울기를 비교하고 그 기울기가 같으면 1을 리턴하고 그렇지 않으면 0을 리턴하면 된다. (x1, y1), (x2, y2) 좌표가 있을 경우, 그 기울기는 아래와 같다. 기울기 = (y1 - y2) / (x1 - x2) 모든 좌표를 서로 대조해보아야 하기 때문에, 반복문을 돌면서 모든 점들의 기울기 쌍을 구해본다. 아래에서는 tempDotsArray 라는 dots의 원소 타입을 Double로 바꾸어 배열을 만든다. 이중 반복문을..

Tistory

[Swift] 프로그래머스 옹알이(1) (lv.0)

[Swift] 프로그래머스 옹알이(1) (lv.0) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/120956 0렙에서 가장 정답률이 낮은 문제이다. 문자열 처리를 요구하는데, Swift에 있는 replacingOccurrences() 함수를 활용하면 그렇게 어렵지 않게 풀 수 있다. 2. 접근 어떤 문자열이 주어지든 간에 말할 수 있는 발음은 네 가지 밖에 없고, 각 문자열에서 최대 한 번씩만 등장하기 때문에 replacingOccurrences(of:with:)를 활용하면 된다. https://developer.apple.com/documentation/foundation/nsstring/1412937-replacingoccurren..

Tistory

부산시립미술관, 부산 여행기

부산시립미술관, 부산 여행, 너무 늦은 방문기 너무나 늦은 방문기이다. 부산시립미술관에 방문을 하고 왔'었'다. 아무것도 모르는 내가 가서 봐도 굉장히 좋은 작품들이 많았어서 기록해보고자 포스팅을 해보고자 한다. 또한 늦은 꼽사리 부산 여행기도 같이... 1. 동해선이 개통한 어느 날.... 나의 홈타운은 돌고래가 넘실대며 화학 공장들이 산업의 결실들을 내뿜어 대는 울산이다. 얼마 전 갔을 때 부산과 이어지는 Metro가 이어지는 굉장히 감격적인 순간을 맞이했기 때문에 내가 안 갈 수가 없었다. 그래서 한 번 이용해보았다. 아아.. 그 빌런들이 가득한 수도권의 1모 호선과 같은 행색을 하고 있는 태화강역의 플랫폼을 볼 수 있었다. 내가 2013년에 해운대를 가려고 했던 그 플랫폼과 너무 달라져있었다. 2..

Tistory

[iOS] unrecognized selector sent to instance

셀렉터 인스턴스가 메서드에 제대로 전달되지 않을 때 생기는 오류이다. 특정 버튼을 만들거나 했을 때, 그 안에서 액션이 되어야 한다. 그런데 그 메서드 명이 정확하지 않거나, 아니면 IBAction 같은 메서드가 두 개가 중복해서 달려 있을 경우, 이러한 오류를 만나볼 수 있다. 실제로 View에 연결되어 있는 것은 btnLightOn 이지만, 나의 경우 메서드 명을 바꿔보았는데, 바로 빌드에 실패하였다. 다시 메서드명을 바꿔주니 잘 되었다. 위의 켜기 창은 뷰 화면에서 특정 문제가 되는 부분 위에 커서를 두고 우클릭을 하면 된다. 만약 걸려있는 액션이 두 개라면, 하나를 삭제해주면 실행이 잘 될 것이다.

Tistory

[IntelliJ] 인텔리제이 깃허브 연동 사용 활용 방법

[IntelliJ] 인텔리제이 깃허브 연동 사용 활용 방법 깃허브에 혼자 깃 작업을 진행할 때는 따로 신경을 쓰지 않는 깃 히스토리. 그렇지만 협업을 진행할 때는 남들이 얼마나 작업을 진행했는지, 병합이 어디에서 진행되었는지를 잘 알아야 협업에 있어서 충돌이 덜 할 수 있다. 초보 개발자들은 자바, 스프링, js, .... 할 것은 많고 배울 것은 너무나 많은 데, 깃 까지 배워가면서 협업을 해야 하는가... 회의감이 들 수 있다. 그렇지만, 이것을 간단하게 해주는 것이 있다. 인텔리제이를 쓰면, 소스트리와 같은 GUI 환경을 보여주는 프로그램을 사용하지 않아도, 이력을 확실히 볼 수 있고, 그 안에서 checkout, pull, fetch-merge 등이 가능하다. 또한 merge-conflict를 해..

Tistory

[Github] Not possible to fast-forward, aborting

[Github] Not possible to fast-forward, aborting 첫 번째 프로젝트를 얼렁뚱땅 끝내 놓고 무엇을 했는가, 부족한 부분이 무엇이었나, 얻은 것은 무엇인가, 어떤 방향으로 나가 봐야 하나 생각하고 있는 중이다. 그 가운데 깃을 가지고 협업을 할 때, 무엇인가 꼬이고 자꾸 원격 레포에서 내 푸시를 안 받아주고, pull을 당겨오니 내 것이 사라져 있어서 복구를 또 하고 해야 했던 기억이 떠올랐다. 많은 삽질이 있었지만, 깃은 협업 도구이다. 내 코드를 더 양산해주지는 않기 때문에 "어 됐다!" 하면 넘어갔었어서 더욱 기억과 기록이 남지 않았던 부분이기도 하다. 희미하게나마 존재하던 에러들을 끌어모아 모아 문제를 해결할 수 있는 방법을 기록해보고자 한다. 세 가지 부분 모두 ..

Tistory

[retrospec] EatTwoGetter 프로젝트 종료...?

[retrospec] EatTwoGetter 프로젝트 종료...? 1. 프로젝트를 마치며...? 9월 30일, 프로젝트 발표가 끝났다. 배운 것들을 열심히 써먹어보고, 안 배운것도 수입해서 되게끔 맞춰가는 것을 경험하는 좋은 시간이었다. 더불어 협업, 협업 하던 것들도 실제로 부딪혀보고 어떤 충돌이 일어나는지, 무엇이 힘든 부분인지 경험할 수 있었다. 다 만들어놓고 나니, 생각해볼 것도 있고 기록해볼 것도 있어서 포스팅을 해보려고 한다. 그리고 '이것이 프로젝트의 끝일까...?'라는 생각도 해보고자 한다. 2. 프로젝트를 진행하며 일어났던 일 1) 서비스 아이디어 변경 처음 아이디어는 금융 용어 사전이었다. 한 이틀 간 이 서비스를 어떻게 구현할 것인지 고민하다가, 새로운 아이디어가 나오게 되었다. 지도..

Tistory

[AWS] ubuntu 서버, MySQL DB 한 번에 배포하기 2(Lightsail)

[AWS] ubuntu 서버, MySQL DB 한 번에 배포하기 2(Lightsail) 이전 편에서는 정말 라이트세일에 가입하고, 서버를 생성하고 기본적인 연결을 해보았다. 이번 편에는 파일질라를 통해 스프링부트 jar 파일을 옮기고, MySQL 서버와 연동하고, ssl, 도메인등록까지 하여 https://(본인 도메인).com 으로 접속했을 때, 데이터베이스를 활용하는 스프링부트 홈페이지를 남들이 볼 수 있게끔 배포를 완성해볼 것이다. 내가 사용한 환경은 다음과 같다. 로컬 환경 : Mac OS 12.6 / Filezila 3.60.2 / Workbench 8.0.29 / InteliJ 서버 환경 : ubuntu 20.04 / java 17 / mysql 8.0.30 / 1. 서버로 파일 전송하고 실행..

Tistory

[Apple Developer Academy] 오픈데이 신청

[Apple Developer Academy] 오픈데이 신청 부트캠프가 끝나면 과연 무엇을 할 것인가를 고민해보았다. 과연 스프링, 코프링으로 확실하게 나의 길을 다져갈 것인가...? 취직은...? 아니 공부를 더 해야 되나...? 나 같은 경우에는 정말 짧은 개발 경험을 가지고 있고, 아직도 배워야 할 것이 너무나 넘쳐나며, 아직 배운 것을 매끄럽게 소화해서 적절한 코드를 짜낸다고 할 수도 없는 것 같다. 그러다 발견한 Apple Developer Academy 이번 부트캠프에서의 프로젝트를 진행하다보니, 생각보다 내가 백엔드의 수 많은 데이터 처리와 정리에 엄청난 흥미를 느끼는 것은 아니라는 결론을 가질 수 있었다. 그래서 좀 더 선택의 폭을 넓혀보고자 내년 3월부터 시작하는 Apple Develop..

Tistory

[AWS] ubuntu 서버, MySQL DB 한 번에 배포하기 3(Lightsail)

[AWS] ubuntu 서버, MySQL DB 한 번에 배포하기 3(Lightsail) 이것이 마지막이다... 이번 편에서 다룰 것은 DB 연결 / SSL(HTTPS 연결) 이다. 이것만 끝나면, 정말 정상적인 웹 서비스를 배포, 구동할 수 있다. 먼저 쉬운 HTTPS 연결부터 해보자! 1. HTTPS 연결(Let's Encrypt 설치) HTTPS가 필요한 이유는 이 포스팅을 찾아들어온 사람들이라면 알 것이다. 데이터 암호화에 필요하며, 나 같은 경우에는 카카오맵 API를 가져다 쓰는 프로젝트를 했는데, HTTPS 연결이 되지 않으면 제대로 데이터를 가져다 쓸 수 없었기 때문에 꼭 필요하였다. 기타 소셜 로그인도 HTTPS 연결을 필요로 하는 것들이 많을 것이다. 그만큼 배포에 필요한 것이 HTTPS ..

Tistory

[UTM] M1 Mac에 Windows 11 설치하기

[UTM] M1 Mac에 Windows 11 설치하기 나는 M1 macbook pro 13인치를 사용하고 있다. 이전에는 윈도우를 사용해야 하는 상황이 있었지만, 맥에 적응하고 나니 1년에 몇 번 정도만 윈도우가 필요했다. 거의 필요성을 못느낀다. PC 게임도 하지 않기 때문에 거의 윈도우와 마주칠 일이 없다. 윈도우는 까맣게 잊고 살았지만, 최근 인프라 수업을 들으면서 심심해진 내가 윈도우를 다시 불러냈다. UTM을 활용해서 CentOS를 깔았는데, 그럼 윈도우도 깔 수 있는거고... 오랜만에 윈도우 화면이나 한 번 볼까? 라는 생각에 이 뻘짓 아닌 뻘짓을 하게 되었다. 1. 기본 준비물 1번. UTM 그냥 설치만 하면 된다. 다운로드 링크 앱스토어로 다운받지 말고 내려 받기로 설치하면 무료이다. 2번..

Tistory

[CentOS]MariaDB 도커 라이즈 간단한 방법

[CentOS] MariaDB 도커 라이즈 간단한 방법 도커 학습을 하고, 간단히 정리해본 것이다. hostOS(CentOS) 안에 있는 도커에 세 가지를 넣는다. mysql, spring boot, nginx를 설치할 것이다. 만약 site3.com 이라는 요청이 들어오면, nginx가 sb로 토스를 해주고, 스프링 부트와 mysql을 host os 어딘가에 있는 포트를 경유해서 접근할 수 있도록 하는 방법을 학습해본다. 이 과정은 도커가 먼저 hostOS에 설치되어 있어야 한다. 1. 현재 서비스 삭제 OS 내부에 있는 DB 충돌을 없애기 위해 mariadb를 재설치한다. sudo yum remove mariadb sudo rm -rf /var/lib/mysql : 잔존 데이터 삭제 sudo rm -..

Tistory

[AWS] ubuntu 서버, MySQL DB 한 번에 배포하기 1(Lightsail)

[AWS] ubuntu 서버, MySQL DB 한 번에 배포하기 1(Lightsail) 1. 왜 EC2가 아닌 라이트세일인가? EC2는 회사에 인프라 관리자가 있거나 자신이 가상 서버, 네트워크, 디스크 볼륨, 보안 그룹 등의 관리를 하드하게 해야할 때 상대적으로 더 적합하다. 상세 설정을 통해서 비용이든 성능이든 이득을 얻을 수 있는 환경에서 일하고 있다면 EC2와 관련 서비스들의 유연한 환경설정은 큰 장점이기 때문이다. 또한 EC2는 네트워크 트래픽보다는 CPU 연산 위주의 프로젝트를 돌릴 때 더 유리하다. 무엇보다 서버를 껏다 켰다 하면서 과금되는 시간을 조절할 수도 있다는 온디멘드 방식은 매우 매력적인 옵션이다. 그러나 뒤집어 이야기하면 세팅 하려고 정작 개발을 못하고 인프라 관리하는 시간이 더 ..

Tistory

카카오맵 GPS 마커 중복 생성 해결방법

카카오맵 GPS 마커 중복 생성 해결방법 이전에 포스팅한 대로 GPS 버튼을 만들면, 마커는 정상적으로 작동하지만, 새로 고침 했을 때, 꺼지지 않고 계속 생성되어 있는 부분이 마음에 걸렸고, 마커가 있을 때 버튼을 클릭하면 중복 생성되는 문제가 있었다. 이에 새로고침을 하면 GPS 마커가 사라지고 GPS 마커가 있는 상태에서 GPS 버튼을 누르면 더이상 마커가 생성되지 않게 만들어야 했다. 그래서 마커가 있을 때는 어떤 변수에 값을 1을 저장하고, 없을 때는 0을 저장하여서 로직을 다르게 구현하면 되겠다는 발상을 하였다. 처음에는 자바스크립트 코드 내부에 값을 저장해보려고 했지만, 전혀 값이 저장되지 않았다. // 2. 위치 수집, GPS 마커 표시 기능(GeoLocation) // 1) gpsButt..

Tistory

mysql 완전 재설치 : The driver has not received any packets from the server. 오류 해결

The driver has not received any packets from the server. 오류 해결(mysql 완전 재설치) 1. 문제의 발생 AWS를 활용하여 도커 배포를 실험을 한창 하고,,, 그다음 날. 인텔리제이를 켜고 평소처럼 localhost:8080의 세상으로 들어가려는 순간. 다음과 같은 오류를 만났다. com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. a..

Tistory

[Java] 람다식과 함수형 인터페이스의 개념

[Java] 람다식과 함수형 인터페이스의 개념 스프링 독서 스터디의 부록으로 java 8부터 등장한 람다식과 함수형 인터페이스 내용을 보면서 정리한 내용이다. 이 두 가지를 왜 알고 있어야 하는지, 어디에, 어떻게 쓸 수 있는지를 알아보고자 한다. 1. 함수형 인터페이스, 람다식의 등장 이유 람다식을 알아보기 전에 먼저 함수형 인터페이스가 왜 나오게 되었는지를 알아보자. 1) 옛날보다 많은 기술의 발전 세상이 발전해 나가면서 싱글 코어 CPU만 쓰다가 멀티 코어 CPU를 쓰기 시작했다. 컴퓨터의 하드웨어가 많이 발전하였다. 그리고 사람들이 일상에서 활용하는 IT 기술이 발전하면서 의미 있는 데이터들이 생산되기도 했는데, 이에 따라 다량의 데이터를 처리하는 프로그램이 필요했다. 이 두 가지 흐름이 1950..

Tistory

개발 이력 노트를 꼼꼼하게 기록해두자.

개발 이력 노트를 꼼꼼하게 기록해두자. 어느덧 첫 프로젝트가 완성되어 가고 있다. 이제 핵심 로직은 정리가 되었고, 미완성인 UI를 하나씩 완성하고 있는 중이다. 여기에 몰두하여 그동안 블로그에 어떤 트러블슈팅을 했는지 하나도 기록을 하지 못했다. 중간에 이 문제점을 인식하고 문제 해결과정을 기록하고 있었지만, 초반에 화면을 구성하고 api를 불러오면서 있었던 이슈들은 기억이 가물가물하다... 일명 삽질을 했던 기록들이 상당히 소실되었다. 최근에는 어설프게나마 버그 수정한 기록들을 리스트업 하고 이것들을 체크하는 방식으로 진행을 하고 있는데, 하나하나 블로그 기록으로 남기면 엄청 많은 분량인데, 미루고 미뤄서 결국 쌓인 부채가 이만저만...하다. 한 20개는 되는거 같다. 이 문제점들을 이제 하나씩 업로..

Tistory

[HTML/CSS] 브라우저 창 조절 시 스크롤바 떨림 현상 해결

[HTML/CSS] 브라우저 창 조절 시 스크롤바 떨림 현상 해결 초기 페이지를 만들다가 스크롤을 축소시키면 위와 같은 현상이 일어났다. 일정크기 이하가 되면 페이지 안에서 드래그를 하거나, 페이지 창을 줄이면 스크롤바가 나타났다가 없어졌다가 하면서 떨리는 것 같은 현상이 일어났다. 무엇이 문제일까 생각하다가, GPS 버튼을 새로만들고 생긴 현상인 것을 알았고, GPS 버튼을 살짝 이동시켜보았다. gps 버튼이 축소되면서 스크롤에 걸릴 때 이와같은 현상이 일어난 것이었다. gps버튼의 css left 속성의 값을 %로 주고 있어서 위치가 바뀔 때 마다 변경이 되었다. 그러나 이는 완벽한 해결방법은 아니다. 현재 html 태그 안에서 gps버튼의 위치는 파란색 컨텐츠 안에 속해있다. 그래서 파란색 컨텐츠 ..

Tistory

카카오맵 API GPS 버튼 커스텀하기(Javascript)

카카오맵 API GPS 버튼 커스텀하기(Javascript) 카카오맵 API를 활용해서 웹 페이지를 만들면, 현재 위치 기능을 geolocation 객체를 활용해서 받아올 수는 있지만, 우리가 흔히 사용하는 스마트폰 카카오맵에서 활용하는 버튼 기능을 제공하지 않는다는 것에서 막힐 때가 있다. https://apis.map.kakao.com/web/sample/geolocationMarker/ 기본 공식문서를 보고 geolocation을 적용하면, 페이지에 접속했을 때 자동으로 현재위치로 이동되는 것을 쉽게 구현할 수는 있다. 그러나, 내가 원할 때, geolocation을 불러오고 싶다면, gps버튼을 커스텀해야 한다. GPS 버튼을 이제 만들어보자! 1. button의 형태를 먼저 만들어준다.(HTML..

Tistory

[Web] 쿠키, 세션 자세히 알아보기, 구현하기

[Web] 쿠키, 세션 자세히 알아보기, 구현하기 스프링 시큐리티를 활용해서 프로젝트를 진행하고, 웹 서버 수업을 들으면서 최초의 로그인 기능을 알아보는 수업을 듣는 중이다. 예전에 교양 수준 정도로 쿠키와 세션을 정리해본 적은 있지만, 그때 당시에는 웹 서버가 무엇인지, 심지어 프로젝트 파일이 무엇인지도 자세히 몰랐기 때문에 그 '개념'과 비유적 표현 정도를 이해하는 정도였다. 이제는 실전에서 쿠키와 세션을 활용할 수 있을 정도로 파악해야 할 때가 왔다. 이전에 포스팅 한 것은 다음과 같다. 2022.07.02 - [IT 지식/Web] - [Web] 쿠키(cookie), 세션(session) 캐시(cache)의 정의 [Web] 쿠키(cookie), 세션(session) 캐시(cache)의 정의 [Web..

Tistory

[Web] 8080 포트 중복 연결 에러 해결 방법

[Web] 8080 포트 중복 연결 에러 해결 방법 Web server failed to start. Port 8080 was already in use. 거창한 에러는 아니다. 기존에 사용하던 포트가 사용 중이기 때문에 일어나는 에러이다. 터미널을 켜고 몇 가지의 명령어만 쳐주면 해결된다. 기존 프로젝트의 프로세스가 사용하는 포트가 사용중이기 때문에 뜬다. 프로젝트 실행을 해도 계속 실행이 유지가 안 되고 꺼질 것이다. 1. 일단 포트를 쓰고 있는 프로세스를 확인해본다. sudo lsof -i :8080 이 명령어를 치면 특정 포트를 사용하는 프로세스의 PID를 알 수있다. sudo : Super User Do의 약어 lsof : list open files의 약어 -i : TCP 네트워크로 열린 파일..

Tistory

[Javascript] 로컬 스토리지 사용 방법

[Javascript] 로컬 스토리지 사용 방법 1. 로컬 스토리지란? 자바 스크립트 메서드나 변수를 사용할 때, 새로 고침을 해도 그 값을 계속 저장해놓고 사용하고 싶을 때가 있다. 예를 들면, 카카오맵을 웹에서 사용하면, 드래그를 하면서 지도를 이동시키는데, 한 번 이동했던 장소를 새로고침 하거나 다른 페이지를 갔다 와도 원래 보았던 위치를 계속 보고 싶을 때를 들 수 있겠다. 자바스크립트는 브라우저를 새로고침 할 때마다 계속 새롭게 불러와지고, 변수도 초기화될 수밖에 없다. 그렇기 때문에 어딘가에 변수를 저장하고 싶다면, 로컬 스토리지를 활용하면 된다. 나는 지금 현재 프로젝트에서 로컬 스토리지를 활용하여 경도, 위도 값을 로컬 스토리지에 저장하고, 창을 닫으면 그 값을 지우는 방법으로 브라우저에게..

Tistory

알약 프로그램 오류 원인을 알아보자

Window OS svchost.exe process 8월 30일 윈도우의 개인용 ‘알약' 프로그램이 독약으로 변하여 부팅이 되지 않게 하는 오류가 일어났다. 많은 사람들이 이 원인에 대해 모르고 잘못 대처하는 바람에 하지 않아도 될 컴퓨터 초기화를 무리하여 진행하기도 했다. 간단하게 이야기하면, 알약을 사용하여서 랜섬웨어에 감염이 될 우려가 있는 것이 아니라, svchost.exe 라는 윈도우 프로세스를 알약이 랜섬웨어로 감지하여 작동하지 못하게 한 것인데, 이것이 왜 OS를 띄우지 못하게 했을까? svchost.exe 에 대해 알아보고, 개발자 꿈나무로서 알아야 할 OS 관련 보안 지식에 대해 간략히 알아보고자 한다. 1. svchost.exe 1) svchost.exe란? 서비스 호스트라고 불리기도..

Tistory

[스터디] AOP의 정의와 활용

[스터디] AOP의 정의와 활용 스프링의 기본 원리를 이제까지 알아보았는데, 마무리 과정에 이르렀다. AOP(Aspect-Oriented Programming)이 남았다. AOP는 스프링의 프로그래밍 모델 중 하나이다. 번역을 하면 관점 지향 프로그래밍이라고 할 수 있다. 관점이라는 말 보다는 실제 AOP가 왜 사용되는지, 어떻게 활용되는지를 알아가다 보면 이것이 어떤 모델인지를 충분히 이해할 수 있다. 1. AOP를 사용하는 이유(WHY) 스프링 프로젝트에 관심이 있다면, 누구든 이 에피소드는 한 번은 들어봤을 것이다. A 팀장 : B님 프로젝트 관련해서 해줘야 할 일이 있을 것 같은데... 간단한 거거든요? B 신입 : 네! 뭐든 말만해주세요(의욕 과다)! A 팀장 : 그래요. 우리 프로그램 성능 측..

Tistory

개발자 이력서 쓰는 방법(워니님 특강)

개발자 이력서 쓰는 방법(워니님 특강) 9월 1일(목), 멋사에서 이력서 특강이 있었다. 흔히 쓰는 자기소개서 문항을 어떻게 작성하느냐가 아닌, 내 소개를 하는 이력서를 어떻게 쓰는지, 꼭 있어야 하는 항목은 무엇인지 등을 자세히 들어볼 수 있었다. 강사님은 워니님이었다. 평소에 개발 관련된 유튜브를 보다 보면 자주 나오시는 분이어서 잘 알고 있었다. 많은 부분에서 도움을 받았고 처음 개발을 접할 때 도움을 받았던 부분이 많았어서 기대가 되었다. 아래에서는 이력서 항목을 어떻게 잘 채워나갈 수 있는지, 어떤 것들을 써야 하는 지를 간략하게 내가 이해한 것들을 간략히 정리해보려고 한다. 1. 이력서 제목 짓기 이력서 상단에 보면 ~~~ 하는 개발자 000 입니다. 이런 제목이 있는 이력서들이 있다. 과연 ..

Tistory

[Spring] getmapping, postmapping 개념과 차이

[Spring] getmapping, postmapping 개념과 차이 1. mapping Annotation이란? 스프링 부트 프로젝트를 하다보면 Controller class를 먼저 만들게 된다. 스프링 프로젝트를 실행시키고 나서 브라우저에 결과값을 한 번 띄워보려면, 메서드 위에 어노테이션을 붙이게 된다. @Controller @RequestMapping("/home") public Controller{ @ResponseBody public String showTest(){ retrun "hi" } } 처음 볼 때는 이 어노테이션이 무엇에 쓰이는 지, 어떤 상황에 쓰이는 지 잘 감이 안 온다. 컨트롤러...? 리퀘스트맵핑....? 리스폰스바디...? 그럼 System.out.println()을 하면..

Tistory

[스터디] 스프링 삼각형과 설정 정보 1)

[스터디] 스프링 삼각형과 설정 정보 ~ 1)편. IoC/DI - 제어의 역전 / 의존성 주입 객체 지향의 기본 원리를 4주에 걸쳐 알아보았다. 이제 실제로 그것이 쓰이는 것을 직접 눈으로 확인할 차례이다. 그렇지만, 그 전에도 스프링이 어떤 특징을 가지고 있는지, 어떤 개념이 토대가 되어 스프링이 작동하는 것인지는 기본적으로 알아야 할 필요가 있다. 어떻게 돌아가는지도 모르면서 원숭이 마냥 코드를 부르는 대로 자판에 찍는 것이 아니라면, 내가 어떤 일을 하고 있는지, 무엇을 해야 하는지, 도구의 특징 중 어떤 것을 활용해서 최대의 효율을 낼 수 있는지 등을 알아야 하지 않을까? 그중에 첫 번째로 중요한 것이 '의존성 주입'이다. DI라고도 한다. 지금 읽고 있는 챕터에서 소개하고 있는 것을 크게 나누어..

Tistory

알약 랜섬웨어 오류 해결 방법

알약 랜섬웨어 오류 해결 방법 알약 8월30일, 사망 팀프로젝트를 하던 중에 같은 조원이 알약 랜섬웨어 오류에 걸리게 되었다. 알약 업데이트로 인해 윈도우를 랜섬웨어로 인식하고 충돌이 일어나서 그런 것이라고 어디서 보았지만, 확실하지는 않았다. 나는 맥을 쓰고 있지만, 예전에 윈도우를 쓴 적은 많기 때문에 안전 모드 진입 -> 제어판 진입, 알약 삭제 -> 재부팅을 하게 되면 충돌이 해결되지 않을까 하는 생각을 했다. 1. 안전 모드 진입 컴퓨터에 따라 다르지만 F8 or F11을 누르거나, 강제 재부팅 3회를 하면 이런 창이 뜨고 특정 설정을 하면 안전모드로 들어갈 수 있다. 2. 제어판 진입, 알약 삭제 3. 삭제중... 알약 안녕! 4. 정상 부팅 완료 정상적인 화면을 볼 수 있다. 맥을 쓰자! 알..

Tistory

2022년 8월부터 12월까지의 작은 계획

2022년 8월부터 12월까지의 작은 계획 점점 해야 할 것은 많아지고, 근데 소화는 못하는 상황이 와버렸다. 요즘 상황은 이렇다. 한 4월쯤에 태어난 개발자 라마스떼는 7월 즈음에 자바라는 걸음마를 떼었더니, 갑자기 JSP, Servlet이라는 요즘 잘 볼 수도 없는 쌀집 자전거를 한 번 타보지 않겠냐고 권유를 받았고, 못 타다가 spring boot라는 네 발 자전거를 타보라고 권유를 받았다. 일단 페달을 굴리면 간다는 것은 알지만, 어떻게 하면 빨리 가는지, 안전하게 탈 수 있는지는 모르는 상황이다. 그런 상태에서 spring이라는 자전거의 부품인 DB라는 부품 제작과정에 대해 슬쩍 건네 듣고, 그것을 과학상자 5호를 가지고 만들어보는 실험을 하기도 했다. 어 그런데, 이 자전거가 따릉이처럼 공유가..

Tistory

[Bootstrap] 카카오맵 활용한 홈페이지 만들기 (1)

[Bootstrap] 카카오맵 활용한 홈페이지 만들기 (1) 1. 프론트 삽질 첫 번째 귀여운 프로젝트를 진행 중이다. 현재 나는 카카오맵 API를 가지고 여러 기능들을 추가하고, 하나의 홈페이지로 구현을 해보는 것을 진행하고 있다. 현재 백엔드 과정을 진행 중이지만, html, css, js, jquery만 며칠 동안 봐서 어질어질하다. 그렇지만, 기본적인 것은 할 줄 알면 좋은 법. 익혀나가고 있다. 그냥 템플릿을 사용하지 않고 만들다가 정말 모니터를 부술뻔 했다. 컴퓨터는 아무 잘못이 없지만, 내가 준비한 카카오맵 API 구현 코드와 부트스트랩을 적용한 UI가 충돌하고, 내가 준비한 카카오맵 코드도 기능을 추가하다 보니 엉켜서 엉망진창이 되어 버렸다. 구현한 코드 중 일부는 아래와 같다. 여기에서 ..

Tistory

[Project 1] 첫 프로젝트 EatTwoGetter 초기 구현

[Project 1] 첫 프로젝트 EatTwoGetter 초기 구현 8월 초부터 첫 프로젝트를 시작했다. 내 아이디어는 선정이 되지 못했지만, 마음에 드는 아이디어를 선택해서 팀이 만들어졌다. 프로젝트의 핵심 아이디어는 '배달요금 절약을 통한 지역경제 활성화'이다. 근거리에 사는 사람들이 배달 요금으로 인해 먹고 싶은 음식을 시키지 않고 지갑을 닫는 부분을 해결하는 것이 프로젝트의 주요 목표이다. 1. 프로젝트의 목표 이 목표를 달성하는 과정에서 얻어지는 효과로는 소비자 소비 심리 진작과 지역 경제 활성화, 그리고 지역 커뮤니티의 활성화가 있을 것이다. 경제적인 것뿐만 아니라, 사회 자본이라고 할 수 있는 지역 커뮤니티 활성화를 통해 사람들의 1인 가구의 증가, 스마트폰 컨텐츠의 발달로 사라져가는 지역 ..

Tistory

[Spring] Framework, Library, API

[Spring] Framework, Library, API 수업 과제로 주어지는 영상들을 보고 간략히 정리하였다. 1. 프레임워크 개발할 때 빈번히 쓰여지는 범용 기능을 한꺼번에 제공해 개발 효율의 향상을 목표하는 소프트웨어 환경이다. 집짓기로 비유하면 기본 틀(평면도), 장비를 제공하는 것이다. * 특징 - 공통적인 개발환경을 제공한다(편의성) - 개발할 수 있는 범위가 정해져 있다. - 제어의 역전이 발생한다.(어플리케이션 동작이 수동적으로 동작한다) - 스프링, 장고, 노드js 등이 있다. 2. 라이브러리 재사용 가능한 코드의 집합이다. 집짓기 예시로 치자면, 집안의 가구, 집기들이라고 할 수 있다. * 특징 - 개발하는데 필요한 것을 모아놓은 저장소 - 필요할 때 호출해서 사용한다 - 코드의 흐름..

Tistory

[스터디] 객체 지향 디자인 패턴

[스터디] 객체 지향 디자인 패턴 3주 차까지 공부했던 객체지향 4개 특성, SOLID에 이어 디자인 패턴을 알아보았다. SOLID 원칙의 특성을 담아 어떤 프로그램을 짜야할 것이다. 사람들이 SOLID라는 원칙에 따라서 프로그램을 설계하기 시작했는데, 마치 맛있는 음식을 만드는 방법처럼 하나의 패턴, 공식이 보이는 것이다. 그래서 이것들을 정리해보았고 디자인 패턴으로 불리게 된 것이다. 디자인 패턴은 하나만 있는 것은 아니다. 마치 백종원씨가 '김치찌개'를 여러 가지 재료와 조리 방식을 활용해서 만드는 것처럼. 7분 동안 돼지김치찌개를 만들면 새마을식당의 7분돼지김치찌개가 될 것이고, 자취생이 해 먹는 간단 김치찌개를 만들 수도 있다. 그렇지만, '맛'은 항상 평타 이상을 친다. 맛에도 공식이 있어서 ..

Tistory

[Database] 물리적 데이터 모델링(Physical Data Modeling)

[Database] 물리적 데이터 모델링(Physical Data Modeling) 실제 프로젝트에서는 물리적 데이터 모델링을 수행하는 경우는 드물다고 한다. 개념적인 부분에서 배경지식을 얻기 위해, 나중에 읽어볼 만한 글을 개인적으로 남기기 위해 본 포스팅을 진행한다. 아래의 글은 발췌한 글로 약간의 수정을 가하였다. 이 다음에는 정규화와 역정규화에 대해 알아볼 것이다. 물리적 데이터 모델링이란. 물리 데이터 모델이란 논리적 모델을 특정 데이터베이스로 설계함으로써 생성된, 데이터를 저장할 수 있는 물리적인 스키마를 말한다. 데이터 모델의 엔터티와 서브타입은 논리적인 집합이며, 만약 관계형 데이터베이스로 설계한다면 이 단계에 와서 물리적인 테이블(Table)로 확정된다. 하나의 논리적 집합(엔터티 혹은 ..

Tistory

[Java] 불변 객체(Immutable Object)

[Java] 불변 객체(Immutable Object) 개발자인 우리는 불변이라고 하면 final이 먼저 생각날 것이다. 자바의 final은 한 번만 할당이 가능하다는 것을 알고 있을 것이다. 재할당을 하려고 하면 컴파일 오류가 당연히 생길 것이다. 이것은 변하면 안 되는 변수, 메서드, 클래스에 예약어로 붙어서 우리가 코드를 구현할 때 실수하지 않게, 로직에만 집중할 수 있도록 도와준다. 1. 불변 객체(Immutable Object)란? 그렇다면 이번 포스팅에서 설명할 불변 객체는 무엇일까? 이해를 쉽게 하기 위해서는 반대 개념이 있는지를 먼저 살펴보는 것도 좋다. 그렇다고 하면, '가변 객체'가 있는 지를 짧게 생각해보자. 우리는 클래스를 만들기도 하고, 만들어져있는 클래스를 가져와서 객체로 만들기..

Tistory

[InteliJ] maven dependency 추가 후 바로 import 안 될때

[InteliJ] maven dependency 추가 후 바로 import 안 될 때 우리는 외부 라이브러리를 쓰려면 의존성 설정을 하고, 각 클래스에서 import를 해서 쓴다. 그런데, pom.xml에 dependency를 추가했음에도 계속 import가 안 된다면...? 어떤 것을 의심해야 할까? 가장 기본적인 것은, 외부 라이브러리가 불러와졌는지를 의심해야 한다. 당연히 라이브러리가 없기 때문에 불러올 클래스가 없다고 인식하는 것이다. 프로젝트 창에서 아래 '외부 라이브러리'에 사용하고자 하는 라이브러리가 들어와 있는지 보아야 한다. 만약, 라이브러리가 없다면, 외부 라이브러리의 소스들이 아직 내 로컬에 없다는 뜻이 된다. 이것을 방지하기 위해서는 다음과 같은 작업을 꼭 수행하자. 1. depen..

Tistory

구글 검색 잘 하기(site: 검색 연산자 활용법, baeldung)

구글 검색 잘 하기(site: 검색 연산자 활용법, baeldung) 예수, 부처, 알라 등 많은 신들이 있다. 그 신들은 전지전능하며 소원을 들어주기도 하고, 인생이란 무엇이며 사람들에게 어떻게 살지를 알려주기도 한다. 신은 인간이 신을 중심으로 모여 사회를 형성하게 했고, 삶의 의미를 만들어주었고 폭발적인 기술 성장에 밑거름이 되었다. 신은 인간을 창조하였다. 그 인간은 구글을 만들었다. 구글은 인간이 만든 것이지만, 우리에게 다시 신처럼 작용하고 있다... 구글을 통해 많은 정보들을 얻고, 삶의 의미를 찾으며, 사회를 형성한다. 구글은 2010년 이후 우리에게 신과 다름없는 기능을 우리에게 제공하고 있다. 한 기업이 신으로 등극하는 것 같아 무섭긴 한데... 아무튼 개발자들은 구글이라는 개발의 신이..

Tistory

[SQL] SQL 기본 문법

[SQL] SQL 기본 문법 데이터베이스를 사용하면 Structured Query Language를 무조건 알고 있어야 한다. 관계형 DB를 다루기 위해서 Oracle이든 MySQL이든 공통적으로 사용하는 표준 언어이다. 하나를 배우면 열을 알 수 있는 언어라고 할 수 있겠다. 1. SQL 문법 분류 분류 설명 데이터 정의어(DDL) - 데이터를 정의하는 언어 - 테이블이나 관계의 구조를 생성하는 데 사용 - CREATE, ALTER, DROP, TRUNCATE 문이 있음. 데이터 조작어(DML) - 데이터베이스에 저장된 자료들을 CRUD(입력, 수정, 삭제, 조회)하는언어 - SELECT, INSERT, UPDATE, DELETE 문이 있다. - SELECT 문은 특별히 질의어(Query)라고 부른다...

Tistory

[Database] 개발 세계에서 데이터베이스란 무엇일까?

[Database] 개발 세계에서 데이터베이스란 무엇일까? 많은 사람들은 자기가 경험하지 못한, 잘 알지 못하는 새로운 것을 볼 때, "저게 뭐야?" "이건 또 뭐야?" 의문을 가진다. (돌고래도 호기심 많은 동물 중에 하나라고 한다.) 어떤 개념이나 기술을 배울 때, 우리는 그것에 대한 추상적인 정의를 이해하고 지식을 가지고 있어야 한다. 그것이 무엇에 쓰이는 것인지, 어떤 것과 비슷한 것인지, 어떤 형태를 하고 있는지, 즉, 용도와 개념 비유, 물리적 외형을 알고 있어야 한다는 것이다. 데이터베이스를 처음 배우는 사람이라고 한다면, DB가 무엇에 쓰이는 지, 무엇과 비슷한지, 어떤 형태를 하고 있는지는 알고 있어야 그다음의 깊은 개념인 논리적 데이터 모델링, 관계형 DB, ... 등등을 이해할 수 있..

Tistory

[mac] mac 숨김폴더, 파일 보기

[mac] mac 숨김폴더, 파일 보기 mac에서 작업을 하다보면, .git, .gitignore와 같은 숨김 폴더를 보고 싶을때가 있다. 당연히 숨김 폴더, 파일이기 때문에 숨겨져 있는데, 우리는 전지전능한 컴퓨터 주인이 아니겠는가. 어떻게 하면 숨김 폴더, 파일을 한번에 볼 수 있을까? 답은 "command + shift + . "이다. 마침표 "." 이다. 이렇게 되어 있는 폴더에서, shift + command + . 을 누르면 다음과 같이 변한다. 만약, 다시 숨김 폴더와 파일을 숨기고 싶다면, shift + command + . 을 다시 한 번 더 눌러주면 된다.

Tistory

[Java] 내부 클래스와 익명 클래스 그리고 람다

[Java] 내부 클래스(Inner Class)와 익명 클래스(Anonymous class) 그리고 람다(Lambda) 1. 들어가며, 내부 클래스는 왜 필요한가? 하나의 클래스 안에서만 쓰이는 객체를 생성하고 싶을 때가 있다. 혼자 개발을 한다면 다른 곳에 구현을 한 번 하고 다른 클래스에서는 구현을 안하는 방법으로 사용하면 된다. 그렇지만, 2명, 3명, ... 100명이 개발을 같이 한다면...? 주석을 꼼꼼히 남기지 않는 한 그것을 다른 곳에서 구현하는 사람이 나타날 것이다. 그래서 단발적으로 사용하고, 확장할 필요가 없는 객체를 구현해야 할 때 내부클래스를 사용한다. 클래스의 메서드 안에서 구현을 하고 끝내는 내부클래스가 생겨난 것이다. 사용 이유 정리 1. 프로그램 안에서 일시적(단발적)으로 ..

Tistory

[Database] 개념적 데이터 모델링(Conceptual Data Modeling)

[Database] 개념적 데이터 모델링(Conceptual Data Modeling) 1. 데이터 모델링이란? 앞의 글에서 예시를 든 치킨집 예시를 다시 살펴보자. 2022.07.27 - [IT 지식/Database] - [Database] 개발 세계에서 데이터베이스란 무엇일까? 정말 치킨집 정보를 데이터베이스로 관리하고자 한다면, 어떤 과정을 거쳐야 할까? IT 지식 기반으로 생각하지 않아도, 우리는 어떤 카테고리, 어떤 기준을 가지고 치킨집의 정보를 분할할지를 직감적으로 떠올리게 된다. 또한 우리에게 필요한 정보를 기반으로 카테고리를 생각한다는 것이다. 예를 들어 우리가 필요한 정보가 "저렴한" 치킨집이라면, 그것만 알려면 항목으로 상호명과 메뉴, 가격만 있으면 된다. 그렇지만 저렴한 치킨집의 전화..

Tistory

[Database] 논리적 데이터 모델링(Logical Data Modeling)

[Database] 논리적 데이터 모델링(Logical Data Modeling) 개념적 모델링 이후 이루어지는 단계이다. 개념적 모델링의 개념은 아래에 포스팅 되어 있다. 2022.07.29 - [IT 지식/Database] - [Database] 개념적 데이터 모델링(Conceptual Data Modeling) [Database] 개념적 데이터 모델링(Conceptual Data Modeling) [Database] 개념적 데이터 모델링(Conceptual Data Modeling) 1. 데이터 모델링이란? 앞의 글에서 예시를 든 치킨집 예시를 다시 살펴보자. 2022.07.27 - [IT 지식/Database] - [Database] 개발 세계에서 데.. masterpiece-programming..

Tistory

[CS] Multi Process, Multi Thread 개념과 구현

[CS] Multi Process, Multi Thread 프로세스와 스레드에 대해서는 이전에 한 번 정리를 한 적이 있다. 2022.07.06 - [IT 지식/CS] - [CS] 프로세스와 스레드 [CS] 프로세스와 스레드 프로세스와 스레드 1. 프로세스의 개념 어떤 작업을 위해 실행할 수 있는 파일을 '프로그램'이라 한다. 그 프로그램이 컴퓨터에서 연속적으로 실행될 때, 그것을 프로세스라고 한다. 메모리에 올 masterpiece-programming.tistory.com 하지만 개념적인 측면에서 프로세스가 무엇인지, 스레드가 무엇인지 정도만 정리를 했기 때문에, 지금 와서 스레드를 사용한 프로그램을 구현하라고 하면...? 말하는 감자에 불과해진다. 그래서 프로그래머스 자바 중급 강의와 여러 참고 자..

1 2 3