All
38 posts
배그 데이터 분석

일단 프로젝트 리드미만 옮겨놓기 … PUBG Analysis PUBG(PlayerUnknown’s Battlegrounds) 데이터 분석 프로젝트 (수정 진행 중 입니다.) 프로젝트 개요 🎯 목표 배틀그라운드에서 게임 순위를 높이는 전략을 도출하는 것이 이 프로젝트의 핵심입니다. 특정 맵과 클러스터에서 얼마만큼의 이동거리와 데미지를 내야 우승 확률이 높은지를 분석합니다. 📊 데이터 사용 기간: 2017~2018년 PUBG 매치 데이터 분석 범위: 주요 맵인 에란겔(Erangel) 과 미라마(Miramar) 주요 변수: 이동 거리(, ) 데미지() 파티 크기 및 스쿼드 유형(솔로/듀오/스쿼드) 생존 시간() 킬 수() 🧩 전제 조건 플레이어는 3가지 유형으로 나뉜다고 가정: 교전 선호형: 적극적으로 교전을 즐기는 플레이어 생존 우선형(존버): 교전을 최소화하고 생존을 우선하는 플레이어 균형형: 적당히 파밍하고 교전을 선택적으로 즐기는 일반적인 플레이어 맵별로 교전 지역 및 플레이 스…

새싹해커톤 대상 후기

대회 끝나자마자 쓰고 싶었는데, 이런저런 일들로 .. 이제야 올립니다. 아! 물롱 대회랑 상관 없는 일임. 시작하깨효 ..? (사담 가득 주의) 🌏 팀 구성 2024년 6월 쯔음 .. 졸업논문을 마무리하고 여유가 생겨서 그동안 참여해보고 싶었던 해커톤을 찾아보게 되었다. 그동안 눈팅만 해오던 데이콘에서 새싹해커톤을 보고 일단 팀 빌딩을 지원해주는 운영사무국의 오픈채팅방에 들어갔다. 참가할지 말지 고민하던 중, 하린님(PM)의 아이디어를 보고 너무 좋은 나머지 무작정 팀에 들어가게 되었다. 많은 아이디어 중, 하린님의 아이디어를 채택한 (내가뭐라고) 이유는 이 주제였는데 여기에 너무 찰떡인 아이디어 이면서, PM이 개발 쪽에 대해 모른다면 제한 없이 무궁무진한 아이디어를 잘 낼 수 있지 않을까? 라는 생각이 들었기 때문이다. (+ 열정가득한멘트) 모든 개발자들이 그런건 아니지만, 나는 아이디어를 생각하다보면 <어떤 기술을 쓸지, 이게 구현 가능할지> 부터 생각하게 되는 것 같다…

석사학위논문 회고

기계학습 기반 종양 세포 식별 방법에 관한 연구 1. 개요 처음 졸업 논문에 대한 방향은 대장염 연구에 이어 크론병을 연구하는 방향으로 진행하려고 했다. 2023년 3월 입학 후 10월까지는 크론병에 관한 내용과 데이터를 수집, 정리하고 있었는데… 이런 저런 이유들(병원 교수님 컨택 실패, 머신러닝에 대한 관심 등) 으로 졸업 논문 주제를 바꾸게 되었다. 원래 연구실에서 진행하고 있던 프로젝트이기도 했고(저널에 내려고 했음), 생물 관련한 쪽보다는 머신러닝에 관심이 너무너무 많아서!! 를 택하게 되었다. 연구실에 들어온게 2021년 11월 경이고, 이 프로젝트가 실제로 시작된 시기는 2022년 4월이다. (사실상 장기 플젝) 연구실에서 하고있는 다른 연구과제들이 많아서 아주 천천히 진행되고 있었다…… 사실 미룬거임… 미룬이가 되, 2. 일정 졸업 논문 주제 변경 후, 일정이 타이트하게 진행되었다. 타이트한 만큼 마무리 과정이 험난했다.. 특히 디펜스(1차 논문심사)에서 엄청 …

99클럽 코테 스터디 16일차 TIL

프로그래머스 코딩테스트 문제 👉 모음사전 문제 링크 🌱 전체 코드 정답 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 🤦‍♀️ 처음 제출했을 때의 제출내역이 기록에 안남아서 .. (아마 틀려서 그런 듯) 코드가 없어졌다. 기억을 대충 꺼내보자면,, 정답 코드에서는 경우의 수를 사전 순에 맞게 계산을 해준거라면, 처음 짠 코드에서는 앞의 경우의 수를 다 계산해서 더했다고 해야하나 .. 일단 ㅠㅠ 오늘 TIL 시간이 조금 늦어서 ..! 회고를 짧게 쓸 수 밖에 ㅠㅠ 완탐 관련해서 조금 더 공부를 해야겠다고 느꼈다. 오늘 배운 것: 부족함. 프로그래머스 코딩테스트 문제 🌱 전체 코드 정답 코드 💬 오늘의 회고

99클럽 코테 스터디 15일차 TIL

프로그래머스 코딩테스트 문제 👉 뒤에 있는 큰 수 찾기 문제 링크 🌱 전체 코드 정답 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 🤦‍♀️ 처음에는 내가 좋아하는 큐로 돌렸는데 시간초과가 났다. 왠지 술술 짜여진다 싶었는데 … 제한사항 4 ≤ numbers의 길이 ≤ 1,000,000 1 ≤ numbers[i] ≤ 1,000,000 제한사항 확인 꼭 하기 .. ㅠㅠ deque로 돌리면 다음의 큰 값을 찾을 때까지 계속 돌려야된다. 그리고 만 봐도, 5에서 6까지 두 번의 반복을 해야되는데, 3의 순서에서도 한번 또 같은 것을 반복한다. 그럼 3번의 손해가 생긴다… 틀린 코드🥲 오늘 배운 것: 오늘의 사담: 오늘 이력서 특강을 들었는데, 내가 여태 쓴 서류는 서류도 아니었다는 것을 느꼈다. 다른 사람들의 이력서를 직접 구경해보니, 정말 깔끔하고 정리가 잘 되어있어서 놀랐다. 그 와중에 단점 피드백 하시는 거에 더 놀라버린 이력서도 몇 번 넣은 상태에서 보니…

99클럽 코테 스터디 14일차 TIL

프로그래머스 코딩테스트 문제 👉 기능개발 문제 링크 🌱 전체 코드 틀린 코드 입니다. . … . . 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 🤦‍♀️ 도대체 … 뭐가 문제인데 …? 자바 미들러 분들한테 슬쩍 가서 여쭤봤는데 아직 푸는 중이라고 하셔서 .. ㅜㅜ 처음에 며칠 걸리는지 세는 deque 구성은 바로 했는데, while문 부터 막혔다. 계속 deque range 초과 떠서 .. if문 넣고 이것 저것 하다보니 복잡해지고, while문은 무한 루프로 바꾸고, 그 안에서 break하게 만들었다. 그니까 결론은 처음 계획한 거랑 완전 다르게 흘러갔다는 뜻 .. 그리고 테스트 11을 결국 못 풀었다는 뜻 .. 그래서 .. 다른 사람의 풀이를 볼 수도 없었다는 뜻 .. 그럼 이만 … 오늘의 사담: 🥲 매번 스터디를 집 앞 카페에서 하는데 오늘 컨디션 난조로 .. 집에서 했다. 집에서 하니까 뭔가 집중이 잘 안되는 느낌 … 그리고 일단 논문 리젝 ^^ 이라 해야…

99클럽 코테 스터디 13일차 TIL

프로그래머스 코딩테스트 문제 👉 이진변환 반복하기 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 아주 아주 깔끔하게 거의 한방에 풀었다. 비기너 문제 일지도 … ? 다른 사람의 풀이: 프로그래머스 다른 사람 풀이 중 ‘안강민’ 님의 코드를 보았다. 제일 많은 좋아요 수는 아니지만, 낭만있게 이진수 구하는 함수를 직접 구현하였다. 이건 사담인데, 재작년 초 부터 연구실에서 파이프라인을 하나 만들기 시작했다. 작년 여름 쯔음 완성이 되었는데 그 동안 함수 파라미터, 함수 이름, 함수가 없어짐 .. 등의 다양한 이슈가 있었다. 파이프라인 수정해서 고쳐쓰는 건 나의 몫 … ^^ 가끔 파라미터 늘려줘서 설정 값의 다양성을 확보하는 건 좋았으나 .. 함수 이름이랑 파라미터 이름 자꾸 수정하지 마세요 🥲 그리고 패키지 이름도 바뀌고, 패키지 내의 함수를 다른 곳으로 이동을 한다던가 .. 🤬ㅎㅎ 아무튼 이런 일이 있어서, 함수를 사용할 때도 그냥 대충 …

99클럽 코테 스터디 12일차 TIL

프로그래머스 코딩테스트 문제 👉 덧칠하기 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 어제 올린 글 가독성이 굉장히 떨어지는걸 .. 배포하고 알아버렸다.. 정신없이 쓰다보니 그렇게 됐네요. 오늘 푼 덧칠하기 문제 처음에 보고, dictionary로 value에 칠하면 1, 안칠하면 0 으로 놓고 풀려고 했다. 이런 식으로, 풀려고 했는데 시간초과가 걸려서 중간에 생각을 바꿨다. 근데 다른 사람 풀이에 비슷하게 푼 사람이 있네 ..? 딕셔너리 형태는 아니고 리스트로 순서에 따라 0, 1로 구분만 주는게 더 나은 것 같다. 오늘 배운 것: 오늘 논문 figure 수정하는데, 데이터 한번 파라미터 잘못 설정해서 돌린 것 때문에 한 2시간 정도 낭비했다. 결국 밤 9시 넘어서까지 어떻게 다 돌리긴 했는데.. 다음부터는 제발 파라미터 설정 잘 하고 확인해보고 돌려야겠다 … 목요일 심사 마지막 신청일이라 내일 논문 진짜 마무리 해야해서 … 시…

99클럽 코테 스터디 11일차 TIL

프로그래머스 코딩테스트 문제 👉 괄호 회전하기 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 문제의 내용은 주어진 괄호리스트에 대해서 회전을 하면서 괄호가 맞게 되었는지 카운트를 하는 것이다. 우선 괄호가 열고 닫히기 위해서는 주어진 괄호리스트의 길이가 짝수여야 하기 때문에 연산량을 줄이기 위해서 길이가 짝수인지 먼저 확인을 하였다. (홀수면 return 0) 짝수인 리스트는 deque로 만들어서 deque의 왼쪽부터 괄호 한 개씩 뽑아서 popleft(), append()를 하게 만들어서 회전을 시켰다. 1회전마다 괄호가 제대로 되었는지 확인을 해야한다. 이 때, 제일 첫 번째 괄호가 닫힌 괄호가 나오면 바로 return 0을 한다. 만약 열린 괄호가 나오면, 그 다음에 닫힌 괄호가 쌍이 맞는 지 확인을 하고, 쌍이 맞으면 deque에서 제거를 한 다음, 남은 것들을 다시 체크한다. (열렸는지 부터 ..) 근데 여기서 열린 괄호가 나온 …

99클럽 코테 스터디 10일차 TIL

프로그래머스 코딩테스트 문제 👉 두 개 뽑아서 더하기 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 오늘도 deque를 사랑하는 나.. 아마 시간복잡도는 O(n(n-1))..? 마지막에 sorted 안쓰고 제출한거 빼고는 잘 푼 것 같당. .. . 근데 제출하고 이거 쓰다가 combination 함수로 깔끔하게 푼 사람들 보고 새로운 함수 알아감니다 .. 오늘 배운 것: combination 함수(시간복잡도 O(nCk)) 이 문제에서는 O(nC2) = O(n(n-1)) 함수 선언 및 사용 오늘의 사담: 졸업 논문 쓰기 전 워밍업 ..! 졸업논문 쓰고 있는 것도 심사 후에 .. 논문 작성한 총 과정을 블로그에 남길 예정 (˘▾˘) 프로그래머스 코딩테스트 문제 🌱 전체 코드 💬 오늘의 회고

99클럽 코테 스터디 9일차 TIL

프로그래머스 코딩테스트 문제 👉 문자열 내 마음대로 정렬하기 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 초반에 풀었던 코드는 아래에 있다. 설명을 하자면, 입력받은 strings를 sort by x[n]으로 놓고 정렬까지는 했는데, 그 다음에 내가 정한 n번째 알파벳이 여러 단어에 겹치면 사전 순으로 정렬을 해줘야되는데 이게 까다로웠다. 하 .. 그래서 결국 코드 갈아엎어버리고 다시 짰다. 오늘 배운 것: lambda의 사용.. 을 잘하자 라는 교훈 오늘의 사담: 분명 주말이 왔다고 행복해하던게 방금 전인거 같은데 왜 토요일이 끝났는지요? 왜 일요일인지요? 불행 중 다행인건 이번 주 수요일 선거로 빨간 날 !! (근데 논문 써야됨) 프로그래머스 코딩테스트 문제 🌱 전체 코드 💬 오늘의 회고

99클럽 코테 스터디 8일차 TIL

프로그래머스 코딩테스트 문제 👉 할인 행사 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 이중 for문을 두번이나 써서 풀었다. … . 시간초과 안난게 신기할 정도 … 이중 for문 두번 썼으니 O(2n^2)을 더 넘는 것 같다. 왜냐면 그 내부에서 슬라이싱까지 했으니 .. ㅠ 스터디에서 collections의 Counter함수를 쓰셨다고 해서 찾아봤다. 오늘 배운 것: Counter 함수 오늘의 사담: 맨날 내일 학습할 것은 무엇인지 칸에다가 사담 주저리 떨어서 그냥 사담으로 바꿨다. 어떻게 보면 일기같은 ..~ 오늘 드디어 교수님께서 논문 심사 신청 허락을 하셨다 !!! 드디어 .. 드디어 .. dobby is free… 까진 아니고 그래도 자유의 경계선까지는 왔다 … 이제 데이터 세트 하나만 더 추가하면 돼 !!! figure 수정만 하면 돼 !!! biological한 내용 추가만 하면 돼 !! 저널만 쓰면 돼 !!! 프로그래머스 …

99클럽 코테 스터디 7일차 TIL

프로그래머스 코딩테스트 문제 👉 기사단원의 무기 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 오늘 하루종일 논문에 매달렸는데 발전은 없었다. ..^^ 내일 혼나고 수정하지 모 .. ~ 어차피 혼날 거 그냥 문제풀고 집 갈래 .. 라는 마인드로 문제 풀었다. 시간초과 날거 같았는데 역시나 ,, 리스트로 풀어야되나 ..? 하다가 제곱근이 int면 홀수개고 아니면 짝수개인데 라는 아이디어에서 코드를 짰다. 제곱근까지만 for문 돌려서 그동안의 약수는 2씩 더하고, 제곱근이 딱 int면 +1, 아니면 그냥 거기서 끝으로 짜니까 시간초과 안났다. 처음에 푼 코드 ㅎㅎ 이렇게 풀면 무한으로 굴러갈거 .. 알고 있었잖아 … ! 내일 학습할 것은 무엇인지: 논문 쓰기 … 오늘 진짜 너무너무 피곤하다 … EM을 이용한 GMM 수식 넣을지 고려.. kneighbors 좀 더 읽어보고,, 루베인 알고리즘 … 코드에 왜 있는지 누가 설명좀 ㅠㅠ (는 나) 프…

99클럽 코테 스터디 6일차 TIL

프로그래머스 코딩테스트 문제 👉 피보나치 수 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 당연하다는 듯이 재귀함수로 풀고 오류가 났다! 시간초과 때문에 정의한 fibo 함수 안에 나눗셈을 넣고 별 짓을 다 했는데 계속 오류가 나서 .. 그냥 딕셔너리로 풀어볼까? 싶어서 일단 그냥 짜봤는데 바로 성공할 줄은 …! 원래 오늘 논문 좀 쓰고 오후에 문제풀이 하려고 했는데, 연구실 출근해서 머리 비울겸 푸니까 괜찮은 것 같다! 그래서 논문은 언제 쓰지 … 추가 (오후 11:12 ..) 처음으로 스터디 톡방에 TIL 올려봤는데 피드백 해주셔서 감동받았다 … 중간 카톡내용에 -1일 경우가 아니라 -1이 아닐 경우라고 정정해주셨다. 그래서 다시 풀어본 재귀 코드!!! 놀랍게도 재귀로도 정답이 나올 수 있었다!! 내일 학습할 것은 무엇인지: 내일도 프로그래머스 한 문제 풀고 TIL 작성하기, 자소서 정리하기! 프로그래머스 코딩테스트 문제 🌱 전체 …

99클럽 코테 스터디 5일차 TIL

프로그래머스 코딩테스트 문제 👉 햄버거 만들기 문제 링크 👉 둘만의 암호 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 오늘 솔직히 스터디 할 시간이 전혀 없는데.. 그냥 무작정 참여했다. 졸업논문 내일 미팅 진행해야해서 discussion을 작성해야 하는데.. 심지어 introduction도 ref를 다 안달았다. 내일 씨게 혼날 예정 .. 그래도 오늘 figure랑 result 부분은 싹다 마무리 했다. 그래도 바뀌겠지만 … 오늘 스터디 문제 얘기는 안하고 딴 소리 중이긴 한데 오늘 스터디 문제가 제법 쉬웠다. 근데 둘만의 암호 저렇게 푼거 조금 부끄러울지도… 다들 아스키코드로 변환하셨던데 나는 그냥 무작정 알파벳 리스트에 때려박기!! ㅎㅎ 이러다가 이제 코테 가가지고 알파벳 하나 빼먹어서 디버깅 지옥에 갇혀봐야 정신을 차리지 … 그래도 그냥저냥 풀었다. 나름 스터디원들이랑 자기소개도 하고, 문제에 대해 이야기도 해보는 시간 가지면서 …

99클럽 코테 스터디 4일차 TIL

프로그래머스 코딩테스트 문제 👉 바탕화면 정리 문제 링크 👉 가장 먼 노드 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 미들러 문제 ‘바탕화면 정리’ 한 문제 풀고 챌린저 문제 ‘가장 먼 노드’ 풀었다. 일단 바탕화면 정리 문제도 스터디원 한분이(성함이 기억 안난다 ㅜㅜ) min max로 짧고 간결하게 잘 푸신걸 보고 앗차 싶었ㄷㅏ .. 혼자 if else문 남발하면서 이상하게 풀어버린 .. 그리고 deque를 너무 좋아해버린 .. 링크가 2개씩 있는 줄 모르고 ,, 그냥 눌렀는데 얼떨결에 둘 다 2번을 풀었다. 당구 연습도 풀려고 했는데 .. 문제 접근을 잘못 했다. 스터디에서 비유님 설명보고 아차 싶었다. 아이디어 없이 허겁지겁 풀었더니 빙빙 돌아가고 있었다 .. 근데 비유님 코드 짜는게 상당히 깔끔하고 비트연산자라던가 포인터라던가 사용하는 솜씨가 대단하셨다. 둘 다 예전에 c언어 할 때 쓰고 잊고있었는데 코딩테스트 공부를 하면 할 …

99클럽 코테 스터디 3일차 TIL

프로그래머스 코딩테스트 문제 👉 최댓값과 최솟값 문제 링크 🌱 전체 코드 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 오늘 공문처리, 논문 등의 이슈로 늦게 퇴근해서 늦은 저녁을 먹었다. 근데 그 와중에 운동 30분 하고오니.. 오후 10시반이 넘었다. 오늘 안에 TIL 쓸 수 있을까 했는데 일단 오늘의 미들러 문제가 너무 쉬웠다. 진심 한 5분컷 한거같다. 근데 시간복잡도 계산을 안하고 그냥 막 풀었는데 테케 다 0.0x초로 나와서 .. 일단 바로 블로그 적는 중.. 내일은 퇴근 빨리 해서 공부 좀 해야겠다. 매일 너무 늦은 퇴근때문에 스터디도 최소한으로 하게 되는데 .. 반성 ㅜ 무엇을 새롭게 알았는지: 오늘 이렇게 바쁜 와중에도 우아한테크블로그 우연히 들어가서 글 몇개 읽어보다가 해보고싶은 토이 프로젝트가 생겼다. 뭔지는 .. 노션에만 적어놨다. 언제할지 모르니까 ㅎㅎ 빨리 졸업논문 마무리하고 내가 하고싶은 플젝 .. 하고싶다 ㅠㅠ 너무 여유가 없는 .. …

99클럽 코테 스터디 2일차 TIL

💬 오늘의 회고 깃허브 블로그 글을 공유하고 의견을 나누기 위해서는 utterances를 적용해야겠다는 생각이 들었다. 그동안은 나 혼자만의 기록용이었는데 확실히 혼자하니까 나태해지는 것 같다. 그래서 오늘은 댓글기능을 적용해볼 것이다. 일단 TIL 쓰고 ㅎㅎ 오늘도 스터디에서 문제들이 올라왔다. 스터디 아닌 날도 올려주시는 줄 몰랐다. 오히려 좋아 .. 내가 골랐으면 문제 쇼핑하고 있었을 것 같다. 아직은 미들러만 풀려고 한다. 일단 논문쓰고 자소서 서류들 넣느라 정신이 좀 없는 상태이다. 오후 6시 퇴근인데 요즘 논문때문에 오후 7시 퇴근이면 일찍 퇴근하는 편 .. ㅠㅠ 교수님께서 일단 졸업논문 먼저 완성하라고 하셔서 졸업논문에 집중하는 중이다. 팟팅.. 무엇을 새롭게 알았는지: 네이버 코테봤을 때, ‘해시맵으로 푸는거죠?’ 다들 이 말을 했다. 나는 해시맵이 뭐지 .. 이러고 조용히 있었다. 근데 ? 파이썬에서는 해시맵 = 딕셔너리였다. 이래서 기본개념이 중요한거 같다. ==…

99클럽 코테 스터디 1일차 TIL

💬 첫날이니까 서론 며칠 전 네이버 코딩테스트 보고 심각성을 깨달았다. 한 2년 전쯤 대학원 갈지 취업할지 고민하면서 알고리즘 공부하다가 결국 대학원에 납치 된 이후로 알고리즘 공부를 아예 안했다. 근데 눈 떠보니 졸업논문 쓰고있고, 취업해야하고.. 예전에 한 기억 살려서 코테봤다가 겨우 1솔했다. 이번에 쉬웠다해서 1차 멘붕.. 시간복잡도 고려안해서 2차 멘붕.. 아무튼 그렇게 코테 공부해야지 생각했는데 마침 스터디 한다길래 냅다 참여. 심지어 무료에다가 열심히하면 선물도 줌 ..!! 아무튼 그래서 신청을 하려고 보니 비기너, 미들러, 챌린저 있길래 일단 네이버 코테의 쓴 맛을 보고 비기너로 신청을 하고 문제를 봤는데 .. 백준 단계 별 첫 문제 수준이라 미들러로 넘어가서 풀었다. 💬 오늘의 회고 어떤 문제가 있었고, 나는 어떤 시도를 했는지: 처음에 성격 유형에 따라 분류할 때, 입력 데이터에 정해진 알파벳이 있는 줄 모르고 모든 알파벳을 고려해서 코드를 짜다가 .. 뭔가 이상…

백준 15649번 N과 M(1) / python, 파이썬

👉👉 15649번 문제 바로가기 👉👉 reference: 코드1 👉👉 reference: 코드2 👉👉 reference2: 백트래킹 👊 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 👉 입출력 입력: 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력: 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 💬 풀이 c언어로 DFS를 배웠다지만 … 전공수업에 따라가기 벅차서 제대로 사용할 줄도 몰랐다. 백트랙킹 첫 문제여서 접근 방식 조차 몰라서 그냥 검색 해버렸다. 재귀함수 && 백트래킹을 이용하는 문제이다. 백트랙킹이란, 해결책에 대한 후보를 구축해 나아가다 가능성이 없다고 판단되는 즉시 후보를…

백준 18870번 좌표 압축 / python, 파이썬

👉👉 18870번 문제 바로가기 👈👈 👊 문제 수직선 위에 N개의 좌표 X1, X2, …, XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X’i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, …, XN에 좌표 압축을 적용한 결과 X’1, X’2, …, X’N를 출력해보자. 👉 입출력 입력: 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, …, XN이 주어진다. 출력: 첫째 줄에 X’1, X’2, …, X’N을 공백 한 칸으로 구분해서 출력한다. 💬 풀이 “Xi > Xj를 만족하는 서로 다른 좌표의 개수” 라는 문장의 말 뜻을 이해 못해서 도대체 뭔 소리인가 싶었다. 여기서 국어를 못한다는 것이 드러나는 부분 … 다양한 문제를 접함으로써 문제의 의도를 파악하도록 해야겠다. 우선 sys를 통해 input함수를 대신하여 입력받음을 통해 시간복잡도를 줄일 수 있다. input()과 달리 …

vanilla JS로 그림판 만들기

👉👉 그림판 바로가기 👈👈 🤔 계기 처음 개발을 시작하면서는 백엔드에 관심이 생겼지만, 결국 프론트엔드와 백엔드 둘다 기초적인 개념과 지식이 바탕이 되어야 한다는 것을 깨달았다. (아닐지도?) 그렇게 생전 접해본 적 없는 자바스크립트에 대한 호기심이 생겼고, 배움을 통해 직접 내 손으로 작은 결과물을 내고 싶었다. (사실 그냥 만들어보고 싶었다는게 학계의 점심.) 근데 확실히 뭘 만들면서 내가 원하는 것들을 직접 구현하다보니 무엇을 어디서 어떻게 활용해야하는지 느낌이 왔다. (느낌만..?) ✨ 지원 기능 🖤 다크모드 가능 🎨 그림 저장 가능 🖌 여러 색상 선택 가능 👩‍🎨 색 채우기 가능 🖍 펜 굵기 선택 가능 🍇 이름 입력 후 사용하는 기능 구현 🎨 결과물 미리보기 localStorge를 통해 이름을 받을 수 있다. 이름을 입력하면 ㅇㅇ’s painting! 이라고 상단에 적힌다. 그림판 붓의 굵기를 조절 할 수 있다. 색 채우기도 가능하고, 버튼을 통해 그림을 저장할 수 있다…

백준 4948번 베르트랑 공준 / python, 파이썬

👉👉 4948번 문제 바로가기 👈👈 👊 문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 👉 입출력 입력: 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다. 입력의 마지막에는 0이 주어진다. 출력: 각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다. 제한: 1 ≤ n ≤ 123,456 💬 풀이 처음에 일반적인 소수문제와 비슷하…

백준 2941번 크로아티아 알파벳 / python, 파이썬

👉👉 2941번 문제 바로가기 👈👈 👊 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 👉 입출력 입력: 첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 ’-’, ’=‘로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다. 출력: 입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 …

백준 2908번 상수 / python, 파이썬

👉👉 2908번 문제 바로가기 👈👈 👊 문제 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다. 상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다. 두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오. 👉 입출력 입력: 첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다. 출력: 첫째 줄에 상수의 대답을 출력한다. 💬 풀이 보자마자 리스트로 입력받아서 리스트 reverse해서 역순으로 나열한 후, 다시 join으로 합친다음에 int형으로 바꿔…

백준 1152번 단어의 개수 / python, 파이썬

👉👉 1152번 문제 바로가기 👈👈 👊 문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 👉 입출력 입력: 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다. 출력: 첫째 줄에 단어의 개수를 출력한다. 💬 풀이 문제 잘못 읽고 한 단어가 여러 번 등장하면 한번으로 쳐야되는 줄 알았는데, 등장한 횟수 모두 세는 거였다. 근데 코드가 너무 짧고 문제도 쉬워서 설명할게 없다.. 문제 잘못 읽음. set(sent)해서 같은 단어는 한번만 세어야 하는 줄 알고 뻘짓함. 처음에 시간초과 나옴.. 을 통해 문장을 공백 단위로 끊어서 입력받는다. upper도 안써…

백준 1157번 단어 공부 / python, 파이썬

👉👉 1157번 문제 바로가기 👈👈 👊 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 👉 입출력 입력: 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력: 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 💬 풀이 처음에 딱 문제보고, 아 금방 풀겠네 싶었던 내 오산… 대소문자 구분안하고 빈도수 구하는 것과 최댓값을 출력하는 것이 아닌, 알파벳(그것도 대문자)를 출력한다는 것을 구현하면서 뇌정지 조금 왔다.🤯 우선 입력값을 받을 땐, 을 통해 대문자로 모두 전환을 시켜준다. 그리고 을 통하여 입력값들의 중복값들을 제거한 뒤 리스트로 만들어준다. data_list(중복 업는 리스트)의 각 알파벳들을 dat…

백준 2675번 문자열 반복 / python, 파이썬

👉👉 2675번 문제 바로가기 👈👈 👊 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code “alphanumeric” 문자만 들어있다. QR Code “alphanumeric” 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*+-./: 이다. 👉 입출력 입력: 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력: 각 테스트 케이스에 대해 P를 출력한다. 💬 풀이 문제의 T, R, S를 모두 입력받아야 하는데, 우선 T의 수를 알아야 얼마나 반복할 지를 알기 때문에 으로 T의 값을 받는다. 그 후, f…

백준 10809번 알파벳 찾기 / python, 파이썬

👊 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 👉 입출력 입력: 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력: 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, … z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. 💬 풀이 우선 단어 S의 입력을 string으로 받은 후에, for문을 이용하여 문자열의 각 문자가 알파벳에 있는지 찾도록 한다. 이때 소문자 알파벳은 리스트로 구성하며, 리스트의 범위 값을 아스키코드의 숫자 범위를 통해 지정한다. 여기서 find함수는 index함수와 비슷하지…

🌕 vscode terminal에서 python 실행 단축키 설정

주변에 (몇 없는 🙂) 취업한 사람들에게 들은 이야기 중 대부분이 “c언어 공부 .. 그 정도면 됐으니 다른 언어로 갈아타” 라는 … 말씀에 … 처음 코딩을 할 때 배웠던 python을 제대로 해보자! 라는 생각이 들었다. 그래서 vscode로 파이썬을 하려는데 이게 웬 .. 오류 ..? 인가 싶어 보니 terminal에서 compile이 python이 아닌 code runner(c 사용)로 돌아가는 것이었던 .. 것이었던.. 것이었다… 코드 실행 단축키 문제였으므로 단축키를 바꾸는 글입니다. 서론이 기네요 😅 ⌨️ mac 단축키 : + + 윈도우 단축키 : + + 위와 같이 keyboard shortcuts가 뜨는데, vscode의 단축키를 설정할 수 있는 창이다. ⌨️ Type to search in keybindings 칸에 을 검색한다. 위와 같이 검색이 되는데, 일치하는 검색어(파란 글씨)를 클릭하면 글자 왼쪽에 연필모양의 버튼이 뜬다. ⌨️ 원하는 단축키로 …

🌊 html의 기본 (2)

우선 첫 번째 포스팅에서는 기본적으로 아는 내용들에 대해 다루긴 했지만, 그래도 아직 html이 익숙치 않은 것은 어쩔 수 없나보다 .. 근데 또 나름 글을 작성하다보니 재미있는 것 같기도 하고 …?🤔 최근 블로그 테마 수정하고 이것저것 하다보니 자바스크립트도 배워서 직접 웹디자인도 해보고싶다 … (마음만 .. 😎) 무튼! 다음 내용 시작! ☁️ 줄 바꾸기 줄 바꾸는 기능을 하는 태그들 HTML은 공백(space bar)과 엔터(enter key)를 여러 번 입력하더라도 하나의 공백만으로 인지한다. 그렇기에 줄 바꾸는 기능을 하는 태그들을 익혀야한다… (마크다운에서도 비슷하다. 근데 마크다운은 단락은 자동으로 되더라 ..) 줄 바꾸기 기능을 하는 가장 일반적인 태그는 와 태그이다. 하나의 문단을 의미하는 태그: p는 paragraph의 약자로, 문단을 의미한다. 위와 같이 코딩을 할 경우, 첫 번째 문단과 두 번째 문단 사이에 공백라인이 들어간다. 출력은 아래와 같다.…

🌊 html의 기본

개인프로젝트를 진행하게 되면서, html을 처음부터 차근차근 공부를 해야겠다는 생각이 들었다. 마크다운도 잘 못하는데 🤦‍♀️ 원래 그냥 읽으면서 공부하려 했는데, 어차피 타이핑도 칠 겸, 손가락에 익힐 겸 … 포스팅도 할 겸! 겸사겸사 적으면 나중에 까먹었을 때가 되더라도 도움이 되겠구나 싶어서 .. . ☁️ HTML의 구성요소 요소 (Elements) HTML에서 시작 태그와 종료 태그로 이루어진 모든 명령어들을 의미한다. 태그 (Tag) 요소(Elements)의 일부로 시작 태그와 종료 태그 두 종류가 있다. 시작 태그는 요소를 시작하며, 종료 태그는 요소를 끝내는 기능을 가지고 있다. 일부 태그 중에는 종료 태그가 없는 것도 있다. 태그 안에 align이라는 속성(attributes, 애트리뷰트)를 사용한다면, 문단 안의 정렬을 설정할 수 있다. 변수(Arguments) 속성과 관련 된 값으로, 위의 코드에서처럼 align 이라는 속성의 center 라는 변수를 지정하였다…

Merge Sort

👊 이진 탐색 트리 개념 이진 탐색 트리는 임의의 키를 가진 원소를 삽입, 삭제, 검색 등을 하기에 효과적인 자료구조이다. 모든 연산은 (node) 값을 기초로 실행하며, 2개 이상의 같은 key값을 허용하지 않는다. 이진 트리는 공백이 아닐 시에 다음과 같은 조건들을 만족한다. 모든 노드는 상이한 키를 가짐. 왼쪽 서브 트리 노드들의 키는 루트의 키보다 작아야 하고, 오른쪽 서브 트리 노드들의 키는 루트의 키보다 커야 한다. pic1.png (a): 이진 탐색 트리가 아님 / (b): 이진 탐색 트리 / (c): 이진 탐색 트리 이진 탐색 트리에서의 탐색 (순환적 기술) 키 값이 x인 원소를 탐색할 때 이진 탐색 트리가 공백이면, 실패로 탐색이 끝난다. 시작은 루트에서부터 시작을 하고, 루트의 키 값이 x일때, 탐색이 성공하여 종료된다. 키값 x가 루트의 키값보다 작을 시, 루트의 왼쪽 서브트리만 탐색한다. 키값 x가 루트의 키값보다 클 때, 루트의 오른쪽 서브트리만 탐…

포인터(1)

👊 포인터의 기본 포인터 변수란? 다른 변수의 주소를 저장하는 변수 포인터 변수는 주소를 저장하기 위해서 주소 크기만큼 메모리를 사용하는데, 주소의 크기는 시스템에 따라 다름. 포인터 변수는 다른 변수를 가리키는 변수이다. 포인터는 주소를 이용해서 특정 변수에 접근할 수 있도록 도와준다. 포인터 변수를 선언할 때는 데이터 형을 먼저 쓰고, 을 쓴 다음, 변수 이름을 적어준다. 포인터의 선언 포인터 변수는 포인터 형에 관계 없이 항상 크기가 4바이트이다. (32비트 플랫폼을 기준으로 함.) 포인터의 사용 주소 구하기 연산자 변수 이름 앞에 &를 사용하면 변수의 주소를 구할 수 있다. 반드시 변수 이름 앞에만 사용할 수 있으며, 상수나 수식에는 사용할 수 없다. &연산자로 구한 주소를 포인터 변수에 대입할 때 형이 일치하는 경우에만 대입하도록 주의해야 한다. 간접 참조 연산자 포인터 변수 이름 앞에 를 사용하면 포인터 변수가 가리키는 변수에 접근할 수 있다. *연산자는 반드시 포…

이진 탐색 트리

👊 이진 탐색 트리 개념 이진 탐색 트리는 임의의 키를 가진 원소를 삽입, 삭제, 검색 등을 하기에 효과적인 자료구조이다. 모든 연산은 (node) 값을 기초로 실행하며, 2개 이상의 같은 key값을 허용하지 않는다. 이진 트리는 공백이 아닐 시에 다음과 같은 조건들을 만족한다. 모든 노드는 상이한 키를 가짐. 왼쪽 서브 트리 노드들의 키는 루트의 키보다 작아야 하고, 오른쪽 서브 트리 노드들의 키는 루트의 키보다 커야 한다. (a): 이진 탐색 트리가 아님 / (b): 이진 탐색 트리 / (c): 이진 탐색 트리 이진 탐색 트리에서의 탐색 (순환적 기술) 키 값이 x인 원소를 탐색할 때 이진 탐색 트리가 공백이면, 실패로 탐색이 끝난다. 시작은 루트에서부터 시작을 하고, 루트의 키 값이 x일때, 탐색이 성공하여 종료된다. 키값 x가 루트의 키값보다 작을 시, 루트의 왼쪽 서브트리만 탐색한다. 키값 x가 루트의 키값보다 클 때, 루트의 오른쪽 서브트리만 탐색한다. ✍️ 탐…

동적 메모리 할당 과제

1. 👊 문제 동적 메모리 할당을 사용하여 정수형 배열을 생성하고, 그 배열의 크기만큼 정수를 입력받는다. 이때 같은 정수가 1번 이상 입력될 수 있으며, 중복되지 않은 정수들만을 출력하는 프로그램을 작성하시오. 3가지 다른 데이터에 대해 프로그램을 실행하시오. 2. 🤔 코드 설명 3. 😎 코드 전체 주석이 없는 전체 코드입니다. 4. 💻 실행화면 위 코드를 참조하시면서 궁금하신 점이 있다면 아래 로 남겨주세요!👇 1. 👊 문제 2. 🤔 코드 설명 3. 😎 코드 전체 4. 💻 실행화면

배열과 문자열

이번 2학기에 새로 배우는 내용인 배열부터 포스팅을 하도록 하겠습니다 :) 이전 학기에 배웠던 내용은 이곳에서 볼 수 있습니다. 차근차근 옮길 예정.. 1. 배열의 기본 같은 데이터 형의 변수를 메모리에 연속적으로 할당하고, 같은 이름으로 사용하는 방법. 배열의 각 원소는 메모리에 연속적으로 할당된다. 배열의 선언 배열을 선언할 때는 우선, 배열의 , 이 필요하고, []안에 를 써주어야 한다. 배열의 크기는 반드시 0보다 큰 로만 지정할 수 있다. 배열의 크기는 로 지정할 수 있다. 배열의 크기를 구할 때 연산자를 이용할 수 있다. 배열의 사용 배열을 사용할 때는 첨자 또는 를 이용한다. — 같은 이름의 배열 중 몇 번째 원소인지를 []안에 써준다. — 배열의 인덱스는 항상 0부터 시작하고 하나씩 증가된다. 배열을 사용할 때는 for문을 활용한다. (예제 7-1) 배열의 인덱스가 유효 범위를 넘어서지 않아야한다. 배열도 따로 초기화를 하지 않으면 쓰레기 값을 갖는다. 2. …

7장 [쉽게 풀어쓰는 c언어 express]

강의를 수강하며 네이버 블로그에 기록해 두었다. 그게 벌써 작년이라니 🥲 시간은 순식간에 흘러가는데 내 실력은 왜 … 🤦‍♀️ 네이버 블로그 글들 중 조회수가 유난히 많은 글들을 옮겨놓으려고 한다. 그 중에서도 조회수가 1500이 넘은 이 글부터 옮기기… 🐬 do while 문 적어도 한 번은 무조건 실행하고, while의 조건이 참이라면 do 안의 문장들을 반복한다. # 예제 1 : 사용자가 0을 입력할 때 까지 숫자를 더한다. # lab : 숫자 추측 게임 프로그램이 가지고 있는 정수를 사용자가 맞추는 게임. (up down게임) # 도전문제! 위의 프로그램이 게임이 되려면 난수를 발생시키는 것이 좋다. 난수는 (rand()%100)으로 발생이 가능하다. stdlib.h 헤더 파일도 포함시켜야 한다. ​ 를 위한 난수 생성의 개념과 적용 👇 ​ ​ 🐳 난수 생성 라이브러리 함수를 이용한 난수 생성 주어진 범위 안에서 난수 생성 실수형 난수의 생성 난수(random number): …