캠페인 관련 에러 메일을 발송했는데

일단 동시에 오는게 문제기 떄문에 시간 간격을 두길 요청했지만

SAP쪽에서는 메서드 순서로 작동시킬 수는 없고

그냥 시간 간격을 1, 2, 3 순서로 텀을 두고 작동시켜줄 수는 있다고 하지만

1번이 헤더인 경우에 2번 작동 시점에 새 헤더와 라인이 들어갈 경우

결국 헤더 없이 라인들이 들어가기 때문에 이건 안될 것 같았다.

 

해당 내용에 대해서 고민을 계속 해봤지만 문제가 있는 것 같았고

어떻게 처리가 되나 로직을 물어보니 플래그 값 수정 시 가져가서 뿌려준다고 하는데

가져오는 시점에 필터로 라인의 경우 생성 시점 5분 이후 필터만 걸어주더라도

배치가 5분 간격이기 때문에 전혀 문제 없을 것 같았는데

막상 또 이게 바로 적용될지는 논의가 필요하다고 해서 넘어가기로 했다.

 

vscode에서 에러가 나오지 않는 문제는 계속 확인되엇는데

cli를 재설치하거나 확장프로그램들을 재설치하거나

vscode 자체를 재설치하셔도 그대로 에러가 발생했고

일단 포기하고 다른 작업을 하던 중 다른 org에서는 정상적으로 보이시는걸 보고

이거 뭐가 문제가 있긴 하다 싶었는데

팀장님도 그 사이에 옮으셔서 에러코드가 표기되지 않는다고 하셨지만

지금 생각해보면 둘 다 같은 org에서만 에러표기가 안되고 있었던 것 같다.

 

유지보수성 프로젝트쪽에서 납품 발송 테스트를 해달라고 했지만

일단 발송 시도 후 에러가 발생했는데 500에러라 SAP에 전달하고 넘어갔고

판매주문쪽도 에러가 발생했는데

이 부분은 SAP에서 또 일시적으로 뭐가 중단된 상태라고 했는데

다시 복구하면서 전송이 가능하게 됐지만

SAP에서 임의로 수동처리로 승인처리를 해줘버렸기 때문에

SFDC에서 승인 응답 수신 후 진행하는 상태변경을 하지 않아서

고객사에서 다시 문의가 들어와서 확인해보니 수동 처리 문제로

수동으로 값을 변경해도 된다는 안내를 했다.

 

사출 wels 전송 부분은 다시 에러가 발생한다고 해서 봤는데

다른 로직 요청으로 인해서 운영에 배포하다보니

이전에 수정했던 로직(다른 기능)이 사라져버렸고

백업된 내용이 없어서 상당히 당황하셨는데

일단 내 컴퓨터에도 같이 보면서 저장된 일부 정보가 남아있어서

해당 정보를 기준으로 조금씩 복구 시도를 했는데

새로 적용된 로직에 덧붙이는 방식으로 진행하다보니

저번보다 나의 전체적인 로직 이해도가 떨어져서

이번에는 백업한 데이터 외에 큰 도움은 되지 않았던 것 같다.

 

납품쪽 500에러의 경우 필수 필드 일부가 없어서라고 하는데

이 부분도 나중에 추가되었고 필수여야 하는지도 의문이긴 한데

일단은 필수라고 하니 생성될 때 해당 값들이 없으면 프로세스를 안타게 막아야 할 것 같았다.

 

wels 전송 완료까지 확인해서 기분 좋게 마무리하고

다른 요청사항들을 확인했지만 오늘 처리할 내용은 아니라 6시 10분쯤 퇴근했다.

 

 

(1).백준 20232번 Archivist는 해당하는 연도의 값을 출력해야 하는 문제로

일부 년도를 제외하고는 ITMO로 통일해버릴까 싶기도 했지만

그냥 드래그 해서 map으로 만들면 해결되는 문제였기 때문에 map에 담아서 처리했다.

const input = '2006'
const winners = {
  1995: 'ITMO',
  1996: 'SPbSU',
  1997: 'SPbSU',
  1998: 'ITMO',
  1999: 'ITMO',
  2000: 'SPbSU',
  2001: 'ITMO',
  2002: 'ITMO',
  2003: 'ITMO',
  2004: 'ITMO',
  2005: 'ITMO',
  2006: 'PetrSU, ITMO',
  2007: 'SPbSU',
  2008: 'SPbSU',
  2009: 'ITMO',
  2010: 'ITMO',
  2011: 'ITMO',
  2012: 'ITMO',
  2013: 'SPbSU',
  2014: 'ITMO',
  2015: 'ITMO',
  2016: 'ITMO',
  2017: 'ITMO',
  2018: 'SPbSU',
  2019: 'ITMO'
}

console.log(winners[input])

'회고' 카테고리의 다른 글

[개발일지] - 645  (0) 2025.04.09
[개발일지] - 644  (0) 2025.04.08
[개발일지] - 643  (0) 2025.04.07
[개발일지] - 642(주말)  (0) 2025.04.06
[개발일지] - 641(주말)  (0) 2025.04.05

필수 값 두개 중 하나로 값이 통일되어 전달된 문제가 있었는데

정의서대로라면 하나는 size가 10이고 나머지는 20이라 에러가 당연히 발생하고

그 외적으로도 key로 사용되는 값이기 때문에 매칭이 되지 않아 생성되지 않는 문제도 발생했다.

 

정의 논의에 시간이 걸리고

해외 값이라 곤란하다는 입장이었지만 담당자분에게 한참 설명을 드리니

결국 제대로 된 값으로 전달해주시는 방향으로 수정됐다.

 

유지보수 쪽 납품 발송 테스트를 진행했지만

SAP 개발서버에 문제가 있는건지 500에러가 발생했는데

일단 고객사에 전달 후 요청에 의해 SAP에 확인 요청을 보내뒀고

오픈 모니터링 관련 클레임 건수에 대해 문제를 확인했고

코드를 뜯어본 결과 헤더값과 아이템 거기에 이상한 id까지 전달되고 있지만

발송에 카운팅 해야 하는 부분은 헤더라 이전에 진행된 수치 수정 요청과

어떻게 진행되는지 PM분에게 공유드린 다음 마무리했다.

 

팀원분이 vscode에서 배포 시 에러가 발생해도 problems에 표기되지 않아서

라인 확인이 안되는 문제가 발생한다고 문의를 주셨지만

막상 찾아봐도 그런 문제가 발생하지 않은건지 찾아볼 수 없어서

한시간 넘게 찾아보다가 유지보수와 변경요청이 다른 회사에서 동시다발적으로 들어와서

안타깝지만 다음에 더 알아보기로 헀다.

 

출고 관련 문제는 일단 서버인 것은 맞지만 추가 확인이 필요해보였고

SAP쪽에서는 마침 개발 테스트 데이터를 운영에 발송했다고 제거 요청을 주셨지만

운영에 원래 발송해야 하는 값들을 다시 보낸 것이라 딱히 문제는 없는 것으로 확인됐다.

 

키값들이 정상적으로 들어온 이후에도 정상 생성되지 않는 문제가 확인되었고

로직을 전반적으로 수정 후 운영에 배포하긴 했지만

다시 쏘기 전까지는 들어오지 않아서 조금 애매한 상태였는데

담당하는 분에게 문의해보니 해외쪽은 사용하지 않고 있기 때문에

딱히 신경쓰지 않아도 된다고 해서 넘어가기로 했다.

 

오늘도 7시가 넘어서 퇴근하게 됐는데

출근시간을 조금 당기고 그냥 6시에 퇴근해야겠다.

 

 

(1).백준 15610번 Abbey Courtyard는 해당 사각형 면적을 둘러쌀 수 있는 조명의 길이를 구하라는 문제로

사각형이기 때문에 넓이의 제곱근을 구해서 한 변의 길이를 구해준 다음 4를 곱해서 둘러싸는 방식으로 해결했다.

const input = 1234

console.log(Math.sqrt(input) * 4)

'회고' 카테고리의 다른 글

[개발일지] - 646  (0) 2025.04.10
[개발일지] - 644  (0) 2025.04.08
[개발일지] - 643  (0) 2025.04.07
[개발일지] - 642(주말)  (0) 2025.04.06
[개발일지] - 641(주말)  (0) 2025.04.05

이전부터 언급된 인터페이스 배치 작동 관련된 내용을 확인하다가

이번에도 한건만 발송되었지만

어제 분명 수십건이 대기중이었던 것이 생각났기 때문에 의아했는데

문득 인터페이스 로그 자체가 여러건이 아니라 단건으로 되었다는 사실을 알아낼 수 있었고

다른 배치들은 다 1건으로 나눠서 발송되지만 제일 큰 헤더가 의아하게도 배치사이즈가 컸기 때문에

1회 발송처럼 보이도록 로그가 하나였다는 결론을 낼 수 있었다.

 

다시 이전에 쌓인 로그들을 꺼내서 핵심 필드의 개수를 찾아서 건수를 확인해준 다음

모니터링 관리지표에 해당 값들을 업데이트해주고 PM님에게 수정된 내용과 원인에 대해 전달드렸다.

 

이전에 연결했던 다우오피스 관련 템플릿 필드 미기입 등 여러가지 문의가 넘어왔는데

일단 내부 패키지인 Document Templates 사용 관련해서는 오래되서 잘 모르겠지만

null값 참조라는 에러 비슷한 내용을 보아하니 이상한 필드를 연결해서 수정해서 발생한 것 같다고 전했고

이전에 생성해둬서 정상적으로 작동하는 것을 통해서 연결 자체는 정상임을 확인시켜드렸다.

 

이유는 모르겠지만 개발, 운영을 동시에 건드리면서 테스트하시는데

개발서버에서도 에러가 발생한다고 하셔서 확인해보니 연결되지 않은 타입으로 전송 시도를 하는 것으로

해당 내용은 템플릿 연결이 되어 있지 않지만 희망하시는 것 같아서 기존 존재하는 템플릿에 연결한 다음

기존 존재 템플릿에 연결했으며 발송 성공하는 모습 스크린샷을 동봉해서 추가 설명을 해서 전달드렸다.

 

납품 프로세스 SAP 전달 테스트 관련된 문의도 들어왔는데

담당자분에 대해서 고객사 전임자분에게 공유받은게 있냐고 문의주셨지만

SAP에서는 진행할 때마다 수석매니저님, 대리님, 사원님 세분이 랜덤하게 답변주시기 때문에

누가 정확하게 담당하는지는 모르지만 평소 같이 작업하시는 대리님을 맨 위에 올리고 나머지 두분의 연락처도 공유드렸다.

 

사실 고객사쪽 업무를 처리하는 협력사기 때문에 우리쪽에서 요청하기가 애매한데

우리쪽에서 유지보수를 처리할 때 사전 계약한 유지보수시간이 차감되는 방식인지

아니면 건당 계약을 해서 일이 처리되는지도 모르는데 고객사의 협력사에 요청하는건 이상하기 때문에

현재 고객사에서 개발서버 테스트를 하고 싶은 경우 리소스 문제로 닫아둔 SAP 개발서버를 살려야 하고

해당 내용을 직접 요청해주시면 그 이후에 SFDC 개발서버에서 소통하며 테스트가 가능하다고 전달했다.

 

중간에 org 저장소 용량이 다 찼다고 어드민분이 확인 요청을 하셨는데

재고의 경우에는 엄청나게 많은 레코드가 쌓여있지만 창고별로 따로 관리되기 떄문에

모든 제품의 숫자 * 창고의 숫자로 각각 키가 중복이 하나도 없어서 넘어가야 했고

인터페이스 로그라도 삭제하려고 했는데 23, 24, 25년 3개월분 총 27개월 중에서

23년도 로그를 전부 삭제했지만 25%정도밖에 되지 않는게 좀 신기했다.

 

점점 로그가 더 쌓이고 레코드도 더 쌓여서 저장소가 더 필요해질 것 같지만

해당 부분은 고객사에서 세일즈포스에 증설요철을 하면 되는 부분이라 신경쓸 정도는 아닌 것 같다.

 

다우오피스 관련된 내용 문의가 계속해서 들어왔는데

초반에는 테스트 관련 방식과 테스트 결과 등을 전달했고

이후에는 운영, 개발 테스트와 반영여부 등에 대해 전달하며 히스토리를 전달하고

개발에서 테스트하다 운영 샘플 에러 관련 문의도 들어오고

목적성이 좀 모호해보이지만 일단 요청사항들을 바로바로 처리했다.

 

최종적으로는 다우오피스 내부 FORM_CODE를 하나로만 한 이유에 대해서 문의가 왔는데

우리쪽에 권한을 주지 않고 차후로 기안 설정부분을 미뤘다 담당자분이 사라진 히스토리를

기존에 주고받던 대화 스크린샷을 통해 전달드리니 직접 설정해주려고 하셨는데

예전에 확인했던 다우오피스 메뉴얼을 찾아서 설정방법을 안내드리긴 했지만

이것까지 우리쪽에서 확인해야 하는 부분이 맞는지 의아하긴 했다.

 

중간에 팀원분에게 Wels 에러가 발생했을 때 이메일이 안되는 문제에 대해서 질문받았는데

상당히 수상해서 일차적으로는 권한을 의심했고 그 다음엔 메일 발송이 안되는 것을 의심했다.

 

일단 익명함수에서 같은 내용 실행을 통해서 메일 발송이 되는 것까지 확인됐고

전달능력? 부분 설정을 통해서 문제가 없는 것도 확인했지만 전송되지 않았고

권한을 좀 더 자세히 보면서 시스템관리자쪽 메일 발송 권한도 추가해보고

그래도 되지 않아서 발송 메일을 확인해보니 invalid가 포함된 메일이었기 때문에

발송 대상 메일을 변경하니 정상적으로 발송되는 것을 확인할 수 있었다.

 

데이터 초기화로 다시 마이그레이션 업데이트 요청을 받아서 처리하기도 하고

인터페이스 에러가 발생했다고 해서 확인해보니 SAP쪽에서 엉터리 데이터를 넣어줬는데

정의서를 찾아서 그쪽이 틀렸다는 증거를 찾는게 더 귀찮은 답변도 하고

어찌저찌 이것저것 많이 건드린 하루였다.

 

 

(1).백준 20352번 Circus는 서커스 천막 설치 관련 값을 구해야 하는데

이유는 모르겠지만 그냥 제곱근에 3.544를 곱한 값을 원하고 있기 때문에

원주율이 아닌 이상한 값을 곱한 값을 제출해서 통과할 수 있었다..

const input = 1234
const point = 3.5449077018125

console.log(Math.sqrt(input) * point)

'회고' 카테고리의 다른 글

[개발일지] - 646  (0) 2025.04.10
[개발일지] - 645  (0) 2025.04.09
[개발일지] - 643  (0) 2025.04.07
[개발일지] - 642(주말)  (0) 2025.04.06
[개발일지] - 641(주말)  (0) 2025.04.05

오전에 유지보수 등록 관련해서 담당하는 어드민분에게 문의드렸는데

어드민분도 정확한 규정이 없으시긴 했는데 알보고니 그분이 직접 규정을 새로 만드는 중이셨다.

 

일단은 요청자는 공백으로 두고 유지보수로 생성한 다음

해당 내용 id값을 내부 work에 기록하는 방식으로 진행하기로 했다.

 

인터페이스 매일 발송 기록에 대해서 체크하는 부분에서 비정상적으로 적은 부분에 대해 발견했고

해당 사항이 배치의 설정 문제인지 아니면 실제로 그렇게 된건지는 확인이 어렵지만

주말사이에 이렇게 이상한게 이상해서 관련 내용을 공유했고

추가 확인을 해야 하는 도중 갑자기 자바서버 확인 요청을 받아서 중단 후 자바서버쪽 확인으로 돌아갔다.

 

자바서버는 내가 개발하지 않은 부분도 이제 좀 볼만해졌는데

서버에 올라간 로그를 확인하며 어떤 부분이 문제가 되는지 빠르게 확인할 수 있었고

일단 외부에서 자바서버로 발송하는 데이터에는 이상없고 우리쪽 문제임을 파악했다.

 

내부 코드를 확인하기는 더 어려웠는데

일반적으로 자바, 클래스 파일을 같이 올려서 어떤 내용인지 확인할 수 있어야 헀지만

이번에 올라간 클래스의 경우에는 자바파일이 누락되어있기 때문에

일차적으로는 로그에 찍힌 클래스의 코드를 확인할 수 없고

이차적으로는 코드를 확인할 수 없으니 연계된 다른 클래스들이 어떤 것인지 정확한 파악이 어려웠다.

 

유지보수 마감으로 인한 완료처리 요청을 처리해준 다음 점심을 먹고 와서

일단 반영된 것 까지는 확인헀기 때문에 정상처리를 해뒀었겠거니 생각하고 넘어갔는데

막상 서버 재기동을 해도 정상적으로 처리되지 않았는데

결국 휴가중인 분의 노트북 비밀번호를 물어봐서 직접 이클립스로 파일을 확인했다.

 

문제의 원인은 서로 다른 회사를 통합해서 관리하려는 시도에 있었는데

SFDC 발송 토큰은 한번 발급받으면 재사용이 한동안 가능하기 때문에

요청 수신 시 토큰이 없는 경우에는 전달된 값으로 토큰을 생성하고

있는 경우에는 기존에 생성한 토큰(30분 정도 유지)을 사용하는 방식이었지만

안타깝게도 토큰 중복 체크 자체를 공통으로 사용하기 때문에

서로 다른 org(같은 회사 다른 sfdc org)의 토큰을 이용해 인터페이스를 발송해서

영 상관없는 org쪽으로 발송하는 문제가 발생했던 것이었다.

 

원인을 파악하고 나서는 사실 그냥 생성하듯 분리만 해주면 되는 부분이라 쉽게 해결되었는데

원인을 파악하는 과정도 나쁘지 않은 경험이었다.

 

이후 미발송 관련 로직을 다시 확인해보니

요청은 1, 7 상태값인 경우 발송해달라는 일배치였지만

배치가 발송될 시점에 1이 아니라 2, 3 등 다른 값인 경우 발송되지 않고

다시 조회하는 시점에는 상태값들이 변경되니 1 또는 7이 많이 보여서 발송해야 했지만 아닌 것 처럼 보였고

LastmodifiedDate를 기준으로 확인하니 전부 오늘 오전~오후에 수정된 것을 볼 수 있었다.

 

결론적으로 1에서 발송되지 않고 넘어가버리게 되면

그 이후 로직을 타더라도 전송되지 않은 상태로 유지되며

한참 지연 후 또는 방치된 후 최종 상태에 가서 발송되거나

실제로는 1 또는 7에서 발송되었지만 취소된 경우에도 취소되었다는 정보가 발송되지 않기 때문에

정보 누락에 대한 걱정이 되었지만 요청받은 사항 그대로 구현된 것이라 어쩔 수 없었는데

내부적으로도 이건 문제가 많을 것 같다는 의견이 나와서 결국 담당자들을 태그해서 문의 메일을 발송했다.

 

문의 메일 발송 후 얼마 되지 않아서 해당 로직이 맞다는 단순한 답변이 넘어왔는데

왜 그렇게 이용하는지는 모르겠지만

생각해보면 SFDC가 주 처리 경로고 수신처는 그냥 정보를 쌓아둔다는 가정 하에는

진행완료되지 않은 정보를 쌓아둘 필요는 없을 수 있겠다는 추측만 하고 넘어갔다.

 

퇴근하려고 정리하던 중

팀원분에게 파일 전송 관련 문의가 들어와서 확인해봤는데

heap size가 6MB 제한이기 때문에 전송되지 않는 부분에 대해서 협업하는 개발자분이 모르셨던 것 같고

결론적으로는 자꾸 트랜잭션 자체가 터져버려서 로그도 찍히지 않는 문제가 발생했던 것 같다.

 

heap size 문제가 맞는지 용량별 파일을 준비해서 발송 후

이 부분에서 apex를 통해 파일을 로딩하는 과정이 숨어있다는 것을 확인했고

대안으로 가능한 부분들을 전달드린 다음 6시 50분쯤 마무리하고 퇴근했다.

 

(1).백준 24072번 帰省 (Homecoming)는 귀성길 일정이 예정되었을 때

만날 수 있는지 여부를 1, 0으로 출력해야 하는 문제로

처음에는 단순히 a~c 사이에 b가 있는지 체크했지만

b는 오후였고 a, c는 오전 기준이었기 때문에 a는 초과가 아닌 이상으로 변경한 후 해결할 수 있었다.

const [a,b,c] = `2 5 2`.split(' ').map(Number)

console.log(((a <= c) && (c < b)) ? 1 : 0)

'회고' 카테고리의 다른 글

[개발일지] - 645  (0) 2025.04.09
[개발일지] - 644  (0) 2025.04.08
[개발일지] - 642(주말)  (0) 2025.04.06
[개발일지] - 641(주말)  (0) 2025.04.05
[개발일지] - 641  (0) 2025.04.04

(1).백준 17009번 Winning Score는 농구 3, 2, 1점이 획득 개수를 제공할 때

어떤 팀이 이겼는지 출력해야 하는 문제로

sumA, sumB에 각각 팀의 획득 점수를 할당해준 다음

if문으로 이긴 팀을 출력하는 방식으로 해결했다.

const input = `10
3
7
8
9
6`.split('\n').map(Number)

const sumA = input[0] * 3 + input[1] * 2 + input[2]
const sumB = input[3] * 3 + input[4] * 2 + input[5]

if(sumA > sumB){
    console.log('A')
}
else if(sumB > sumA){
    console.log('B')
}
else{
    console.log('T')
}

'회고' 카테고리의 다른 글

[개발일지] - 644  (0) 2025.04.08
[개발일지] - 643  (0) 2025.04.07
[개발일지] - 641(주말)  (0) 2025.04.05
[개발일지] - 641  (0) 2025.04.04
[개발일지] - 640  (0) 2025.04.04

(1).백준 28248번 Deliv-e-droid는 게임에서 얻은 포인트를 출력해야 하는 문제로

배달 성공 시 +50점, 장애물에 부딪힌 경우 -10점이기 때문에 그대로 계산했고

성공 횟수가 장애물 충돌 횟수보다 많은 경우 500점이 추가되기 때문에 삼항연산자를 사용해서 포인트를 추가해줬다.

 

여기서 소괄호를 통해서 구분해줬는데

이 부분이 없는 경우 apex, js 등 여러 언어에서 계산식 충돌이 나기 때문에

명확하지 않은 경우 각각의 식을 구분지어 줘야 한다는 사실을 한번 더 생각해낼 수 있었다.

const [x, y] = `5
2`.split('\n').map(Number)

console.log(x*50 - y*10 +(x > y ? 500 : 0))

'회고' 카테고리의 다른 글

[개발일지] - 643  (0) 2025.04.07
[개발일지] - 642(주말)  (0) 2025.04.06
[개발일지] - 641  (0) 2025.04.04
[개발일지] - 640  (0) 2025.04.04
[개발일지] - 639  (0) 2025.04.02

(1).백준 15025번 Judging Moose는 뿔을 기준으로 같은 경우 even과 합

다른 경우 큰 뿔의 2배 수치와 Odd를 출력해야 하는 문제로

뿔이 없는 경우와 같은 경우를 초기 조건문에서 체크하고

나머지는 다른 경우로 분기처리해서 Math.max로 큰 값의 2배를 출력하는 방식으로 해결했다.

const [x,y] = `2 3`.split(' ').map(Number)

if(x == y){
    if(x == 0){
        console.log('Not a moose')
    }
    else{
        console.log(`Even ${x + y}`)
    }
}
else{
    console.log(`Odd ${Math.max(x, y) * 2}`)
}

'회고' 카테고리의 다른 글

[개발일지] - 642(주말)  (0) 2025.04.06
[개발일지] - 641(주말)  (0) 2025.04.05
[개발일지] - 640  (0) 2025.04.04
[개발일지] - 639  (0) 2025.04.02
[개발일지] - 638  (0) 2025.04.01

(1).백준 3733번 Shares는 주식을 나누는 문제로

x명과 판사가 존재할 때 y개의 주식을 몇개씩 가질 수 있는지 출력하기 위해서

총 주식의 개수(y)에서 판사 + x명을 나눈 값을 Math.floor로 나눔처리해서 출력하는 방식으로 해결했다.

const input = `1 100
2 7
10 9
10 10`.split('\n').map(el => el.split(' ').map(Number))


for(let i = 0 ; i < input.length ; i++){
    const [x, y] = input[i]

    console.log(Math.floor(y / (x + 1)))
}

'회고' 카테고리의 다른 글

[개발일지] - 641(주말)  (0) 2025.04.05
[개발일지] - 641  (0) 2025.04.04
[개발일지] - 639  (0) 2025.04.02
[개발일지] - 638  (0) 2025.04.01
[개발일지] - 637  (0) 2025.03.31

12시 넘어서 퇴근하는 문제로 일단 등록

 

(1).백준 33178번 Micromasters는 1명씩 초대할 때마다 10%씩 할인 혜택이 주어진다고 할 때

n명에게 추천받으면 몇개의 강좌를 무료로 들을 수 있는지 출력해야 하는 문제로

10으로 나눈 값에서 나머지를 버리는 Math.floor를 사용하는 방식으로 해결했다.

const input = 123

console.log(Math.floor(input/10))

 

'회고' 카테고리의 다른 글

[개발일지] - 641  (0) 2025.04.04
[개발일지] - 640  (0) 2025.04.04
[개발일지] - 638  (0) 2025.04.01
[개발일지] - 637  (0) 2025.03.31
[개발일지] - 636(주말근무)  (0) 2025.03.30

(1).백준 25784번 Easy-to-Solve Expressions는 표현식으로 나타낼 수 있는 조합인지 묻는 문제로

순서를 위해 일단 정렬을 진행해줬고

정렬 후 작은 수 두개의 합이 세번째 숫자가 되면 1

작은 두 수의 곱이 세번째 숫자가 되면 2

그리고 아무것도 아닌 경우 3을 출력하는 방식으로 해결했다.

 

const [a,b,c] = `10 30 20`.split(' ').map(Number).sort((a,b) => a - b)

if(a + b == c){
    console.log(1)
}
else if(a * b == c){
    console.log(2)
}
else{
    console.log(3)
}

'회고' 카테고리의 다른 글

[개발일지] - 640  (0) 2025.04.04
[개발일지] - 639  (0) 2025.04.02
[개발일지] - 637  (0) 2025.03.31
[개발일지] - 636(주말근무)  (0) 2025.03.30
[개발일지] - 635(주말근무)  (0) 2025.03.29

 

 

백준 15655번 N과 M (6)은 조합과 비슷한 문제로

x개의 숫자를 주고 n개의 숫자들을 제공할 때 가능한 조합을 출력해야 하는 문제였다.

 

재귀를 사용해서 값을 넣어주고 

const input = `3 1
4 5 2`.split('\n').map(el => el.split(' ').map(Number))

const sortedList = (input.pop()).sort((a,b) => a-b)
const [x, y]     = input.pop()
const result     = []



const recurtion = (list, index) => {
    if(list.length == y){
        result.push(list.join(' '))
        return
    }
    if(index == x){
        return
    }
    for(let i = index ; i < x ; i++){
        recurtion([...list, sortedList[i]], i + 1)
    }
}

recurtion([], 0)
console.log(result.join('\n'))

'회고' 카테고리의 다른 글

[개발일지] - 639  (0) 2025.04.02
[개발일지] - 638  (0) 2025.04.01
[개발일지] - 636(주말근무)  (0) 2025.03.30
[개발일지] - 635(주말근무)  (0) 2025.03.29
[개발일지] - 634  (0) 2025.03.28

(1).백준 11292번 키 큰 사람은

const input = `3
John 1.75
Mary 1.64
Sam 1.81
2
Jose 1.62
Miguel 1.58
5
John 1.75
Mary 1.75
Sam 1.74
Jose 1.75
Miguel 1.75
0`.split('\n')

const result = []

for(let i = 0 ; i < input.length ; i++){
    if(input[i] == '0'){
        break
    }
    const num = Number(input[i])
    const arr = input.slice(i + 1, i + num + 1).map(el => el.split(' '))
    let max = 0
    const strList = []
    for(let j = 0 ; j < arr.length ; j++){
        max = Math.max(max, arr[j][1])
    }
    console.log(max)
    
    for(let j = 0 ; j < arr.length ; j++){
        if(max == arr[j][1]){
            strList.push(arr[j][0])
        }
    }
    result.push(strList.join(' '))
    i+=num
    
}
console.log(result.join('\n'))

'회고' 카테고리의 다른 글

[개발일지] - 638  (0) 2025.04.01
[개발일지] - 637  (0) 2025.03.31
[개발일지] - 635(주말근무)  (0) 2025.03.29
[개발일지] - 634  (0) 2025.03.28
[개발일지] - 633  (0) 2025.03.27

+ Recent posts