전체 글 63

23.04.17. programmers 코딩테스트 문제 풀기[5]

소수만들기 문제 문제 설명 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 입출력 예 nums, result [1,2,3,4], 1 [1,2,7,6,4], 4 입출력 예 설명 입출력 예 #1 [1,2,4]를 이용해서 7을 만들 수 있습니다. 입출력 예 #2 [1,2,4]를 이용해서 7을 만들 수 있습니다...

daily 2023.04.20

23.04.17. programmers 코딩테스트 문제 풀기[4]

두 개 뽑아서 더하기 문제 정수 배열 numbers가 주어질 때, numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성하는 문제다. 제한사항으로는 numbers의 길이는 2 이상 100 이하이고, numbers의 모든 수는 0 이상 100 이하이다. 입출력 예 numbers, result [2,1,3,4,1], [2,3,4,5,6,7] 입출력 예 설명 2 = 1 + 1 (1이 numbers에 두 개) 3 = 2 + 1 4 = 1 + 3 5 = 1 + 4 = 2 + 3 6 = 2 + 4 7 = 3 + 4 따라서 [2,3,4,5,6,7] 을 return 우선 문제와 제한사항, 입출력 예시를 살펴..

daily 2023.04.20

23.04.17. for...in, for...of

Issue 알고리즘 문제를 풀다 보니, for문을 돌리는 일이 종종 발생하는데, array에 대해 for...in문을 쓸 때 index라고 생각한 것이, string이라 더하고 뺄 때 Number()로 감싸주거나, parseInt를 해야 해서 번거롭다. Try&Error 파이썬만 알고 있다가 자바스크립트를 배우다 보니, 익숙해서 for...in 문과 for...of문이 손에 익은데, for...in을 쓰면, string이나 array는 index를, object는 key값을 iterator로 사용할 수 있다. 근데, array의 index를 다루기 위해서 for...in을 쓰면 귀찮은 일이 많이 발생하는데, 이때 반복자로 사용되는 것이 string 타입이라서 그렇다. 배열의 index는 number인데 ..

daily 2023.04.17

23.04.15. programmers 코딩테스트 문제 풀기[3]

이번문제는 공통 지갑 만들기. 간단해 보이지만 약간 꼬아져 있다. 점점 현실에서 발생할만한 문제가 나오니 더 재밌다. 예를들어 pdf를 cropping하는 기능을 만든다고 생각해보자. 여러 사이즈의 pdf가 있는데, 내용물이 다 들어오는 어떤 특정 크기를 찾아서 cropping을 실행하고 싶을 때, 유사한 계산이 필요할 수 있겠다. 이전 문제는 너무 자세히 적으니 시간이 많이 걸려서... 머리로 조금 더 생각하면서 써봐야겠다. 우선 입력 양식은 [ [ 60, 50 ], [ 30, 70 ], [ 60, 30 ], [ 80, 40 ] ] => 4000 이런 식. 생각해보자. 우선 [w, h]로 입력값이 주어져있다. w들과 h의 max을 찾아 곱하면 1차 가장 작은 면적이 될 것. 그렇지만 가로세로를 바꿀 수..

daily 2023.04.15

23.04.15. programmers 코딩테스트 문제 풀기[2]

슬슬 어려워 지는 것 같아서 실시간 문제풀기 기록을 가감없이 남겨보려고 한다. 문제: 3진법 뒤집기 [문제 설명] 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. [제한사항] n은 1 이상 100,000,000 이하인 자연수입니다. 일단 자연수 n이 매개변수로 주어지는 함수인데, 3진법에서 앞뒤로 뒤집은 후 이를 10진법으로 표현한 수를 return하는 것이니까, 3진법으로 만들어야 한다. 3진법으로 만드는 방법은 분명 함수가 있을 텐데, 아니면 3진법을 함수로 구현해도 될듯. 3진법은 0,1,2, 10, 11, 12, 20로 올라가니까, 3으로 얼마나 나눠지는지를 계산하면 될 것 같다..

daily 2023.04.15

23.04.15. programmers 코딩테스트 문제 풀기[1]

또 몇가지 풀다가 막혔지만 풀긴 푼 문제. [문제 설명] 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. [제한사항] 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 쉽다고 생각했다. 실제로 구현 자체는..

daily 2023.04.15

23.04.14. programmers 코딩테스트 문제 풀기[0]

쉬운 것 부터 풀고 있었는데 여기서 잠시 막혔다. [문제 설명] 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. [제한 사항]s는 길이 1 이상, 길이 8 이하인 문자열입니다.s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. 처음에는 아래처럼 단순하게 4자리와 6자리를 if문으로 판단하고, isNaN으로 삼항연산자를 사용하면 끝일거라 생각했는데, 왠걸 여러 테스트케이스에서 에러가 났다. function solution(s) { if (s.length !== 4 && s.length !== 6) { return false } r..

daily 2023.04.15

PySerial을 이용한 RS485, modbus-RTU 통신

1. 모드버스 Modbus는 산업용 자동화 및 프로세스 제어 시스템에서 널리 사용되는 통신 프로토콜이다. 1979년 Modicon에서 개발되었으며, 간단하고 안정적인 구조로 인해 여러 장비 및 시스템 간 통신에 이상적이다. Modbus 프로토콜은 주로 마스터/슬레이브 구조로 동작하며, 마스터는 데이터 요청을 보내고 슬레이브는 응답을 제공한다. Modbus 프로토콜에는 두 가지 주요 변형이 있다. Modbus RTU (Remote Terminal Unit): 이진 형식의 프레임을 사용하는 시리얼 통신 프로토콜로, 주로 RS-232 또는 RS-485 인터페이스를 통해 통신 Modbus TCP/IP: 이더넷 기반의 통신 프로토콜로, Modbus RTU의 데이터 패킷을 TCP/IP 패킷으로 캡슐화하여 이더넷 네..

23, 15주차

15주차 바쁜 한주였고... 공부한걸 생각나는대로 정리해보면, (데이터 타입) 우선 변수가 메모리에 어떤식으로 저장되는지 특히 일반 원시형 데이터와 객체형 자료가 어떻게 다르게 저장되는지에 대해서 배웠는데, 원시형 데이터는 식별자와 데이터를 저장하지만, 객체형은 식별자와 데이터 주소와 데이터 주소에 저장된 데이터로, 예전에 배운 C 프로그래밍의 포인터와 유사한 점을 배웠다. 그래서 객체를 단순히 복사할 경우 서로 데이터를 저장하고 있는 주소가 공유되기 때문에, 복사한 객체를 수정하게 되면 같은 주소를 참조하는 두 객체가 다 바뀌는 상황이 된다는 것. (실행 컨텍스트) 코드를 작성하면 실제로 어떤 식으로 인터프리터가 이해해서, 실행하는 순서가 어떻게 되는지에 대해서 공부한 것. 실행 컨텍스트는 실행할 코드..

daily 2023.04.13

23.04.10. 실행 컨텍스트 더 알아보기 문제

Issue 온라인 강의 실행 컨텍스트에 대해서 알아보는 문제가 주어졌다. // 가장 아래의 코드가 실행 되었을 때, “Passed ~” 가 출력되도록 getAge 함수를 채워주세요 var user = { name: "john", age: 20, } var getAged = function (user, passedTime) { // 여기를 작성해 주세요! } var agedUser = getAged(user, 6); var agedUserMustBeDifferentFromUser = function (user1, user2) { if (!user2) { console.log("Failed! user2 doesn't exist!"); } else if (user1 !== user2) { console.log..

daily 2023.04.12
728x90