-> 이거 전부다 웅상님이 전에 하셨던거고 웅상님 - 수빈님이 상의하셔서 '순수 가챠로직' 부분만 함수로 따로 빼기로 했다
-> 웅상님이 리뷰 해주셨는진 잘 모르겠으나 이거 코드 다 올려주셨기 때문에 웅상님 로직대로 가는게 맞을것 같다
비트맵에 대한 검색결과가 나오질 않는다. 비트맵 그리기 밖에 안 나오는데...? createImageBitmap()?
코딩이 어려워 고민하는 건 나 뿐만이 아닌가보다. 프로도 너도 힘들구나?
도움받은 프로그래머스 질문(스포주의)
1. 정규식에 따옴표를 붙여서 그렇다
문자열이지 않을까? 라는 생각에 따옴표를 붙였더니 내 정규식 패턴은 죽어도 작동하지 않았다.
하다가 도저히 모르겠고 몸도 아파 아무 생각이 나지 않아서 질문하기 쪽을 찾아봤는데 의외의 소득이 있었다.
function applyRegExp(s) {
let filteredS = '';
const engNum = ['/zero/ig', '/one/ig', '/two/ig', '/three/ig', '/four/ig', '/five/ig', '/six/ig', '/seven/ig', '/eight/ig', '/nine/ig']
for (let i = 0; i < engNum.length; i++) {
filteredS = (s.replace(engNum[i], i))
}
console.log('filteredS: ', filteredS)
return filteredS;
}
2. for문 안에 s = filteredS 를 붙였어야 했다
마치 재귀함수 비슷한 느낌으로. 이게 생각보다 중요한데, 패턴을 찾아 바꾼 글자를 다음 for문의 베이스로 쓰지 않으면 기껏 바꿔놓고는 적용시키지 않고 갖다버리는게 되었다.
-> replace든 replaceAll이든 크게 상관 없는듯 하다. 참고 블로그를 봤더니 JS도 ES2021에 replaceAll이 생겼다고 한다. (원래는 없었다)
function applyRegExp(s) {
let filteredS = '';
const engNum = [/zero/ig, /one/ig, /two/ig, /three/ig, /four/ig, /five/ig, /six/ig, /seven/ig, /eight/ig, /nine/ig]
for (let i = 0; i < engNum.length; i++) {
filteredS = (s.replaceAll(engNum[i], i))
s = filteredS;
}
return filteredS;
}
function solution(s) {
let answer = parseInt(applyRegExp(s))
return answer;
}
중복선수가 너무 많으면 안될 것 같다. 중복선수가 10장 정도 뽑히면 더는 안나오게 하는 로직은 어떨까? 라는 제안을 주셨다.
gachaTry라는 인자가 뭔지 몰라 질문을 드렸다 -> 이 함수 실행할 때 이거 필요할테니까 이거 들고가! 라는 느낌
수빈님 설명:
상점 상품 구매 -> productId를 params로 받는다. gachaDB에 있는 gachaQuantity를 검색해서 그 productId를 잡아가게 하는 방식으로..
가챠 타겟과 횟수를 함수의 파라미터로 받을 듯
가챠에서 동일 캐릭터를 10장까지만 뽑는 것은 어떤지에 대한 얘기가 있었는데, 이건 인벤토리 칸수를 제한하는 방식으로 가기로 했다.
웹종 숫자맞추기에 입력한 숫자대로 원 크기 표시되는 것이 있었는데, 이걸로 공 표시해보면 어떨까?
조금 빡세게 검사하는 게임서버 같은 경우는 중복로그인 체크부터 해서 기존 로그인을 끊어버린다.
중복 로그인을 끊어버리고 그 토큰 자체를 블랙리스트에 넣고 새 액세스토큰을 주는 방법도 있는데, 그건 너무 짜쳐서(...)
튜터님이 말씀하신 건 실시간 동기식으로 할 수 있는 게임이 아니다 -> 내가 온라인이고 상대가 온라인이어야 할 수 있는 게 아니다!
cash가 const네? 안 바뀌는거 아니야? 이거 let으로 바꿔줘야 한다
어카운트의 cash를 SELECT 하는게 아니라, purchase_history에 있는 모든 cash 컬럼을 sum해서 잔액을 보여주길 원했던 것
튜터님이 보시기엔 트랜잭션 -> 잔액차감쿼리1, 잔액차감쿼리2 이렇게 보이는 것 같다.
cash 한개만 있어야 하고 지출시 마이너스, 충전 시 플러스로 넣어줘야 한다.
-> unsigned가 아니면 부호 기입이 되어야 한다. 다만 이 이력에 accountId는 있어야 할것.
-> 유저에게는 캐시라는게 없고, 머니 테이블에 캐시라는게 있는 것이다.
-> 그래서 충전 시 +, 구매 시 -로 해서 그 sum이 있길 바라는 것.
저 가챠테이블은 필요없다? -> 갯수 입력해서 하는 가챠면 나쁘진 않은데...
-> findProduct를 할때 가챠 정보까지 다 나오는게 좋다. select 걸어서 gachaQuantity를 가져올 수 있으면 제대로 가챠할 수 있지 않나?
SELECT a.price, b.gachaQuantity
FROM product as a LEFT JOIN gacha as b
ON a.gacha_id = b.gacha_id